簡體   English   中英

Laravel has_many 關系問題

[英]Laravel has_many relationships issue

我有下一個問題:我有兩張桌子:

  1. 頁面

| 編號 | 標題 | 內容 | 描述 | 圖片 | 狀態 | 無索引 | 查看 | 作者 | 模板 ID | created_at | 更新時間 |

  1. page_relations

| 編號 | 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM