對於tp5.0關聯模型的幾點注意事項
阿新 • • 發佈:2019-02-07
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
其中傳入字串和陣列效果相同