thinkphp 关联模型5 为什么在service中模型关联查询失败

2017年1月 总版技术专家分月排行榜第三
2017年2月 PHP大版内专家分月排行榜第一2017年1月 PHP大版内专家分月排行榜第一
2017年3月 PHP大版内专家分月排行榜第三2016年12月 PHP大版内专家分月排行榜第三2016年11月 PHP大版内专家分月排行榜第三2014年10月 PHP大版内专家分月排行榜第三2014年8月 PHP大版内专家分月排行榜第三2014年3月 PHP大版内专家分月排行榜第三2014年1月 PHP大版内专家分月排行榜第三2012年8月 PHP大版内专家分月排行榜第三2012年2月 PHP大版内专家分月排行榜第三2012年1月 PHP大版内专家分月排行榜第三2011年12月 PHP大版内专家分月排行榜第三2011年11月 PHP大版内专家分月排行榜第三2011年6月 PHP大版内专家分月排行榜第三
2017年3月 PHP大版内专家分月排行榜第三2016年12月 PHP大版内专家分月排行榜第三2016年11月 PHP大版内专家分月排行榜第三2014年10月 PHP大版内专家分月排行榜第三2014年8月 PHP大版内专家分月排行榜第三2014年3月 PHP大版内专家分月排行榜第三2014年1月 PHP大版内专家分月排行榜第三2012年8月 PHP大版内专家分月排行榜第三2012年2月 PHP大版内专家分月排行榜第三2012年1月 PHP大版内专家分月排行榜第三2011年12月 PHP大版内专家分月排行榜第三2011年11月 PHP大版内专家分月排行榜第三2011年6月 PHP大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。为什么TP5模型一对一关联select()不好使? - ThinkPHP框架
$Accident&=&AccidentModel::where('acci_state',3)-&field('id,acci_code,receId,station_id,address')-&order('id&desc')-&find();
$Accident-&
$Accident-&$Accident&=&AccidentModel::where('acci_state',1)-&field('id,acci_code,receId,station_id,address')-&order('id&desc')-&select();
$Accident-&
$Accident-&为什么用find方法好使,用select就出现“Trying to get property of non-object”?
ThinkPHP 是一个免费开源的,快速、简单的面向对象的 轻量级PHP开发框架 ,创立于2006年初,遵循Apache2开源协议发布,是为了敏捷WEB应用开发和简化企业应用开发而诞生的。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多的原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进,已经成长为国内最领先和最具影响力的WEB应用开发框架,众多的典型案例确保可以稳定用于商业以及门户级的开发。ThinkPHP中的关联模型注意点
投稿:shichen2014
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了初学ThinkPHP中的关联模型注意点,需要的朋友可以参考下
初学ThinkPHP时,ThinkPHP中的关联模型有一处易错点,现举例如下:需用到的表:id_elite_major和id_elite_student代码举例如下:
代码如下:class EliteMajorModel extends RelationModel{protected $_link=array('EliteStudent'=&array('mapping_type'=&HAS_MANY,& //易错点: 此处在 HAS_MANY 时常会加上 '' 容易写成 'HAS_MANY',导致出错'class_name'=&'EliteStudent','foreign_key'=&'mid','mapping_name'=&'studentslist',),);}
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具PHP框架(20)
模型和关联操作:表对应一个模型、字段对应一个属性操作类的对象时就等于操作某一张表的记录命名规则:指定类名对应指定数据表名下划线的标明对应驼峰式命名的类如果类名和标明不相关,但是想操作那张表:那么可以用protected $name = 'data'; //来确定表名protected $table = 'think_data'; //或者直接设置带前缀的表名类名首字母必须大写命名空间:namespace app\index\use think\Mclass Users extends Model{protected
$name = 'xxx';}TIPS:Model的文件名必须为数据表的表名;(除了使用protected改变表名的方法打破规则)//但是项目中会引起歧义,不推荐使用且要在controller里用到model,必须use\index\model\表名;来使用;TIPS:如果不是主键的id,使用get(id)信息,只能获取到id=1的数据;$user-&save(); //新增;在save前对数据库字段进行赋值(相当于insert),完成对类的操作达到对表的操作例:$user = new U //要进行此操作必须要在控制器里先use;$user-&name
= 'fate'; //对字段进行赋值;$user-&save(); //使用save()方法,做插入操作(insert);//调用静态的create方法例(另一种方法):$user['n_info'] = 'wait';$user['password'] = '123'; //使用数组来新增表数据if($result = User::create($user)){ //使用create方法对数组insertecho $result-&n_info.$result-&}//关于批量新增(Alllist的方式):原理是利用循环insert插入
$user = new Demo(); $list = [ ['n_password' =& '111','n_info' =& 'CMS'], ['n_password' =& '222','n_info' =& 'SMC'], ]; if($user-&saveAll($list)){ echo '新增成功'; }//查询(指定字段)$user = Users::get(1);echo $user-&n_//查询(制定字段):将类的属性当做数组来访问 $user = Demo::get(62);
echo $user['n_password'];//非常有用的方法来查询//根据某个条件查询数据getByXxxx()方法$user = Demo::getByN_info('CMS'); //通过查询到n_info=CMSecho $user['n_password']; //再拿到上述规则下的n_password数据//查询数据$user1 = Demo::where(['n_info' =& 'secoend'])-&find();print_r($user1);当数据已经存在(被查出来后),save()就会执行update操作//对于数据库查询出来的数据,更新数据
$user = Demo::get(2); $user-&n_password = '123'; $user-&n_info = 'none1'; if(false !== $user-&save()){ return '更新成功'; }else{ return $user-&getError(); }//但是,如果想要对查询出的数据进行插入,而不是更新(save)那么:if(false !== $user-&isUpdate(false)-&save()){...}else{...}; //新增数据 $user
= Demo::get(1); $user-&n_info = 'fucxk'; $user-&n_password = '0'; $user-&id = if(false !== $user-&isUpdate(false)-&save()) return '新增成功'; else return '失败';这是在查询数据的基础上新增数据,如果有允许为NULL的字段,那么字段内容新增为get(i)中i的字段//TIPS:到底是insert还是update取决于isUpdate的属性,当isUpdate为false时,做insert处理,当isUpdate为true时,做update处理;自定义数据更新操作:$userArr['n_info']
= 'qwer'; $userArr['n_password'] = '0123'; Demo::update($userArr,['id' =& 2]); //条件为id是2//在use了Demo的model后,直接调用update方法(TIPS:这里如果设置0为首字符,那么会被数据库默认忽略掉)//删除操作 $user = Demo::get(23); $user-&delete();//更简单的删除操作Demo::destroy(24); //destroy里为id值且在删除后刷新页面,页面不会报错总结:controller的类名和表名没有任何关系,而model的表名必须和类名一致,且未驼峰法命名controller需要使用model里的表方法来操作数据表时,需要use
app\index\model驼峰法表名;model中,可以用protected来设置表名和其他属性;两种方法通过对类的操作达到数据库的操作(新增):1、使用save方法;2、使用create方法;一个模型对应一个数据表;表里为下划线,类里为驼峰式命名;要使用model,需先拿命名空间:namespace app\index\再拿到到父类的空间use think\M使用save自动插入数据库操作;使用saveAll(数组),实现批量插入;根据某个条件来查询数据库(更简单的方法)$user
= Demo::getByN_info('CMS');//查询多个数据$list = Demo::all(); foreach ($list as $value){ echo 'id:'.$value-&id.'info'.$value-&n_ }从数据库里查询处的数据,使用save方法为update操作;可利用此特性改变任意值使用if(false !== $user-&isUpdate(false)-&save())的isupdate判断来修改isupdate的值,达到新增功能;使用删除操作$user
= Demo::get(1);$user-&更简便的删除操作Demo::destroy(1);
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:8612次
排名:千里之外
原创:27篇
转载:20篇
(8)(10)(13)(18)

我要回帖

更多关于 thinkphp service 的文章

 

随机推荐