TP5模型belongsTo和hasOne这两个方法的区别

在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同。以下举例说明两者的区别:
首先有user表 字段 id name password字段
然后有user_address表 id user_id city字段

在User模型中关联user_address表的时候使用 hasOne,因为在user表中没有关联两个表的外键

在UserAddress模型中关联user表的时候使用 belongsTo,因为在user_address表中有关联两个表的外键user_id

belongsTo, hasOne, hasMany,  前面三个参数分别代表(‘要关联的模型名称’, ‘两个模型关联的外键’, ‘与外键id关联的另一个表的主键id‘)

原文地址:https://www.cnblogs.com/pyspang/p/11129458.html

时间: 2024-10-10 10:13:23

TP5模型belongsTo和hasOne这两个方法的区别的相关文章

TP5模型belongsTo和hasOne的区别

在使用tp5模型的ORM的时候出现belongsTo和hasOne都有表示一对一的关系,但是二者并不相同.以下举例说明两者的区别: 首先有user表 字段 id name password字段 然后有user_address表 id user_id city字段 在User模型中关联user_address表的时候使用hasOne,因为在user表中没有关联两个表的外键 在UserAddress模型中关联user表的时候使用belongsTo,因为在user_address表中有关联两个表的外键

PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码代码如下: <?php $c = array_merge($a, $b); var_expo

$().each 和 $.each() 两个方法的区别

在jquery中,遍历对象和数组,经常会用到$().each和$.each(),两个方法.两个方法是有区别的,从而这两个方法在针对不同的操作上,显示了各自的特点. $().each,对于这个方法,在dom处理上面用的较多.如果页面有多个input标签类型为checkbox,对于这时用$().each来处理多个checkbook,例如: $("input[name='ch']").each(function(i){if($(this).attr('checked')==true){//一

tp5模型一对一关联hasOne

在一个模型中,新建方法实现外键关联 <?php namespace app\user\model; use think\Model; class GridmanReportLogs extends Model { protected $table = 'sq_gridman_report_logs'; protected $pk = 'id'; protected $resultSetType = 'collection'; public function reportTypeName() {

使用express创建node服务器的两种方法及区别

使用express创建node服务器有两种方法,如下所示: 方法一: var express = require('express'); var app = express(); app.listen('3000', function () { console.log("The server is running at *: 3000"); }); 这是我们常用的一种创建node服务器的方式. 写vue项目时使用的vue-cli脚手架使用的就是这种创建方式.  方法二: var exp

设置数据库兼容级别的两种方法以及区别

转:http://blog.csdn.net/htl258/article/details/5696325 --设置数据库兼容级别的两种方法 --以设置兼容SQL Serve 2005 为例 --法一: ALTER DATABASE database_name SET COMPATIBILITY_LEVEL = 90 GO --法二: EXEC sp_dbcmptlevel database_name,90 GO database_name 要修改为数据库的名称. 各参数值对应的数据库版本: 8

积跬步,聚小流------实例分析jquery开发插件两种方法的区别

1.简介 jquery为开发插件提供了两个方法: *  jquery.extend(object);   为jquery类本身添加新的方法 *  jquery.fn.extend(object);  用来为jquery对象添加新的方法 2.理论介绍 分析这两个方法,不同点就在于中间多了一个.fn,那么这个.fn又是什么意思呢? $.fn是指jquery的命名空间,加了fn的方法和属性,会对jquery的每一个实例有效. 换种说法来解释的话: jquery本身是一个类,有它的属性和方法,赤裸裸的"

注册广播的两种方法和区别

第一种:在清单文件中声明,添加 <receive android:name=".IncomingSMSReceiver " > <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED") <intent-filter> <receiver> 第二种使用代码进行注册如: IntentFilter filter =  

Fragment销毁时replace和add两个方法的区别

这个首先从一个bug说起,如图:   我们都知道fragment切换有两种方式: 1. replace方式 transaction.replace(R.id.content, IndexFragment); 2. add-hide-show方式 transaction.add(R.id.content, IndexFragment); transaction.hide(otherfragment); transaction.show(thisfragment); 而上面按钮中出现bug的就是采用