[英]Laravel 5 Eloquent ORM multi relation
我是Laravel的新手,我正在嘗試創建模型之間的關系。 我的表是:
patch
id
title
area
id
location
area_patch
id
patch_id
area_id
user_area_patch
id
area_patch_id
plant_id
plant_date
用戶模型的“補丁”功能應執行以下操作:
SELECT
p.id, p.title, up.plant_id, up.plant_date
FROM
rsst_farming_patch p
JOIN rsst_farming_area_patch pp,
rsst_farming_user_patch up ON pp.id = up.area_patch_id AND p.id = pp.patch_id WHERE up.user_id = 1
我的模特:
class User extends Model {
public function patchs() {
//return user patchs
}
}
class Patch extends Model {
public function area() {
//return area that this patch belongs to
}
}
class Area extends Model {
public function patchs() {
//return available patchs
}
}
有人可以舉一個例子嗎? 我想研究一下。 我在搞亂用戶模型,belongsToMany和hasManyThrough,但是沒有運氣。
您可能需要稍微修改表結構以實現此目的。
我在user_area_patch
表中看到您正在嘗試將用戶,區域和補丁鏈接在一起。 通常,這不是我在laravel中完成的方式。 通常,您使用數據透視表將兩個項目鏈接在一起。 因此,讓我提出如下建議:
修補程序是否屬於一個用戶? 如果是這樣,則應在補丁表中添加一個user_id。
patch
id
user_id
area_id
title
一個補丁可以位於多個區域嗎? 我對此表示懷疑,因此也要添加一個area_id
。
class User extends Model {
public function patchs() {
return $this->hasMany('App/Patch', 'user_id');
}
}
class Patch extends Model {
public function area() {
return $this->belongsTo('App\Area', 'area_id');
}
}
class Area extends Model {
public function patchs() {
return $this->hasMany('App\Patch', 'patch_id');
}
}
然后,您可以開始引用您的補丁,例如:
$patchs = User::find(1)->patchs()
或補丁所屬的區域
Patch::find(1)->area()
和一個區域中的所有補丁
Area::find(1)->patchs()
這有幫助嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.