thinkphp 模型有外键时的添加和查询

1.模型要继承RelationModel,定义关联关系

class MessageModel extends RelationModel{

protected $_link = array(

‘user‘ =>array(

‘mapping_type‘  => self::BELONGS_TO,

‘class_name‘    => ‘User‘,

‘foreign_key‘   => ‘user_id‘,

‘mapping_name‘  => ‘user‘,

),

);

}

2.查询时:用D方法实例化模型,加入relation(true)

public function listAll(){

$message = D(‘message‘);

$list = $message->relation(true)->select();

//         dump($list);

if ($list) {

$this->list = $list;

$this->display();

}

}

3.插入时:用D方法实例化模型,模型属性赋值只写外键,加入relation(true)

public function save(){

$message = D(‘message‘);

$message->create();

$message->post_time = date("Y-m-d H:i:s");

$user = session(‘user‘);

$message->user_id = $user[‘id‘];  //这里很关键

$message->status = 1;

//         dump($message);

$result = $message->relation(true)->add();

if($result){

$this->success(‘Leave a message success!‘,‘listAll‘,2);

}else{

$this->error(‘Leave a message failed!‘,‘‘,2);

}

}

来自为知笔记(Wiz)

时间: 2024-10-10 20:27:44

thinkphp 模型有外键时的添加和查询的相关文章

MySQL里创建外键时错误的解决

--MySQL里创建外键时错误的解决--------------------------------2014/04/30在MySQL里创建外键时(Alter table xxx add constraint fk_xxx foreign key),提示错误,但只提示很简单的信息:ERROR 1005 (HY000): Can't create table '.\env_mon\#sql-698_6.frm' (errno: 150).根本起不到解决问题的作用.要看错误的详细提示,可以使用命令:(

无法检索记录使用jpa库外键时为空

我面临一个问题,当我搜索一个实体及其与外键记录. 根据业务逻辑,我需要搜索实体--LookupRequest表帐户(与非空帐户id)和外键="回调"(null). 请注意账户id并不是唯一的(为简单起见我删除表中的其他参数,使其短). 一旦我筛选记录,我必须更新LookupRequest. 回调foreignkey条目. 我无法外键为空时检索记录. import javax.persistence.*; @Entitypublic class LookupRequest { @Id@G

EntityFramework Model有外键时,Json提示循环引用 解决方法

正文之前先说两句,距离上篇博客已将近两个月,这方面的学习和探索并没有停止,而是前进道路上遇上了各种各样的问题,需要不断的整理.反思和优化,这段时间的成果,将在最近陆续整理发出来. 个人感觉国内心态太浮躁了,很少有能深入研究下去并将自己经验分享的人,可能很忙,也可能嫌麻烦.特别是面向新技术,尤其是在学习资料有限的情况下,愿意花费时间摸索和分享的人实在太少太少,遇到问题,搜索结果一抓一大把,但是往往都是转载,连最起码的自己验证都没有,结果就是以讹传讹,不仅对解决问题无用,反而容易产生误导.最近这段时

django模型中, 外键字段使用to_filed属性 指定到所关联主表的某个字段

在django项目的开发过程中,在设计模型时一开始将主键设置成了一个自定义的字段,但是在创建搜索索引时却发现必须要存在一个id的字段,并且为主键(不知道是否是项目一开始就这样配置的原因), 但此时表结构已经整体固定下来,并且有外键关联到了这个自定义的的主键,整个后台视图逻辑也已经封装完成,如果主表的主键发生改变,那么外键所在的表就会默认关联到新的主键上,那个后台视图的改动就会非常麻烦,这时就需要使用外键字段中的to_field属性来指定所关联的主表的某个字段,而不会影响到原先的逻辑 demo如下

Navicat设置外键时出现1452错误

admin表中有字段admin_name和admin_realname.notice表中有字段admin_name.之前,notice表中admin_name的外键是admin表的admin_name,现在想改成admin_realname,数据类型和字段长度都一样,但却提示1452错误,如下图所示. 然后百度了一下,得到了一个靠谱的答案: 这是因为表设置了外键约束,而你试图插入一条外键字段所在表纪录不存在的一个值,就会报1452错.比如a.b两表,a表外键id值来自b表的ID.当你在a表中插入

mysql 创建外键时发生错误的原因和解决方法

可以去网上查看错误号,就能知道到底哪里出错了 https://zhidao.baidu.com/question/359868536.html 这里1452对应的错误是因为建立外键的表中还有数据,所以外键建立失败,删除数据后再添加即可成功建立外键 原文地址:https://www.cnblogs.com/kinome/p/9051584.html

数据库中有外键时JavaBean的写法

当写表和实体类之间映射的时候,一旦出现外键,要通过外键找到另外一个类,一旦出现外键必须写成类型private Address address;person表 public class Person { private String pid; private String pname; private int age; private Address address; public Address getAddress() { return address; } public void setAd

解决code first Migration 增加外键时出现错误的问题

先上模型 Comment public class Comment { [Key] public int CommentId { get; set; } [Required] public int Star { get; set; } [Required] public string Content { get; set; } [Required] [MaxLength(30)] public string ProductName { get; set; } [Required] [Foreig

SQL server 主键,外键的使用及子查询的使用 11月20日

 今天上午学习了SQL server里面主键和外键的使用以及如何建立主键与外键的联系 下午学习了SQL server 里面子查询如何应用,里面还练习了函数的运用(字符串函数,聚合函数) 今日小结:通过学习了解了主键和外键的使用,以及子查询(select 查询嵌套)的用法,子查询把小的范围放在括号里面,外面再用大范围包含起来.