1. 程式人生 > >對於tp5.0關聯模型的幾點注意事項

對於tp5.0關聯模型的幾點注意事項

1.belongsTo()、hasOne()的區別

在定義一對一關聯模模型方法時,對其有疑惑不知道該定義哪個:

belongsTo是定義在關聯模型從模型中,也是從模型對應的表一般都儲存外來鍵id,在關聯模型屬於從屬關係

hasOne   是定義在主模型中,在關聯模型中屬於主關係,沒有儲存外來鍵id

他們的所傳入的引數都一樣

第一個引數:關聯模型的名稱

第二個引數:外來鍵欄位名

第三個引數:主鍵名

案例如下:

//User
<?php
namespace app\api\model;

use think\Model;

class User extends Model{

    public function profile(){

        return $this->hasOne('Profile','user_id','id');
    }

}

//Profile
<?
namespace app\api\model;

use think\Model;

class Profile extends Model{

    public function user(){

        return $this->belongsTo('User','user_id','id');
    }

}   

2、hasMany(),belongsTo()區別

這兩個方法用於一對多的關聯模型

hasMany和上面的hasOne一樣,定義於主模型中,沒有外來鍵id的表的對應模型中

belongsTo與上面一樣,定義在從模型中,儲存外來鍵id的表的對應模型中

3、belongsMany的用法

用於一對多的關聯模型的主、從兩個模型中。

belongsToMany傳入引數:

第一個 引數:關聯模型名

第二個引數:中間表名(含表字首)

第三個引數:外來鍵名

第四個引數:當前模型關聯鍵名

4、關聯查詢呼叫

UserModel::with('book,profile')->select();其中的book,profile均為userModel的關聯方法名,均與User有直接關係

user->book

user->profile

UserModel::with(['book','book.comment.']);其中book為userModel的關聯方法名,comment是book的關聯方法名,

user->book->comment

其中傳入字串和陣列效果相同