Laravel 模型關聯 多對多
阿新 • • 發佈:2020-09-17
定義
在Model中定義方法,呼叫belongsToMany
belongsToMany
常用引數說明:
引數位置 | 引數名 | 定義 |
---|---|---|
1 | $related | 關聯模型的類名 |
2 | $table | 中間表名 |
3 | $foreignPivotKey | 當前模型在中間表裡的欄位名 |
4 | $relatedPivotKey | 關聯模型在中間表裡的欄位名 |
public function posts() { return $this->belongsToMany($this, 'wechat_multi_post_post', 'multi_post_id', 'post_id') ->orderBy('wechat_multi_post_post.index') ->withPivot('index'); }
獲取中間表字段
利用模型中的pivot
屬性訪問,但是預設只有兩個模型的key,如果需要額外的欄位需要在定義時用withPivot
宣告需要的欄位名
根據中間表排序
在定義關聯的時候可以用orderBy
排序
更新中間表資料
-
sync 同步更新中間表
-
根據id更新
$this->posts()->sync($postIds);
-
需要更新額外的欄位
$this->posts()->sync([1=>['index'=>0], 2=>['index'=>1]]);
-
-
syncWithoutDetaching 只增加不減少
-
toggle 切換
-
更新已存在的記錄
//array $attributes $this->posts()->updateExistingPivot($postId, $attributes);