[英]Laravel has_many relationships issue
我有下一個問題:我有兩張桌子:
| 編號 | 標題 | 內容 | 描述 | 圖片 | 狀態 | 無索引 | 查看 | 作者 | 模板 ID | created_at | 更新時間 |
| 編號 | page_id | parent_id |
我的任務是:我想按關系輸出頁面。 例如:第 1 頁是第 2 頁的父級。
我做了什么:在我的模型中我使用has_many:
public function relation(){
return $this->hasMany(PageRelation::class , 'parent_id');
}
在我的控制器中,我添加:
$pages = Pages::with('relation')->get();
但是在 dd() 中,我看到我通過 page_relations 表中的值獲取了所有與該頁面具有綁定關系的頁面。
但是......我的問題:我應該怎么做才能在這個模型中通過這個 id 獲取頁面。 例如:我有頁面列表,並且與子頁面(不僅來自 page_relations 的 id)有關系,標題、說明......來自 pages 表?
您可以使用HasManyThrough
關系。 在您的情況下, Page
通過PageRelation
有很多Page
。 我認為文檔將為您提供答案鏈接。
另一方面,還有其他方法可以使用自身的parent_id
字段來處理這種類型的關系。
// pages migration
// schema function
$table->id();
$table->string('page_name')
$table->unsignedInteger('parent_id')->nullable();
$table->timestamps();
// end schema function
// Page.php
public function children()
{
return $this->hasMany(Page::class, 'parent_id', 'id');
}
我通常在數據集不大時使用它,而不是使用中間表。 希望這可以幫助。
我已經解決了它:
public function relation(){
return $this->hasManyThrough(
Pages::class,
PageRelation::class,
'parent_id', // Foreign key on the PageRelation table...
'id', // Foreign key on the Pages table...
'id', // Local key on the projects table...
'page_id' // Local key on the environments table...
);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.