簡體   English   中英

Laravel關系許多tomato分頁問題

[英]Laravel relationship manytomany paginate issue

我有3個桌子/型號

User (has an id)
Articles (has an id )
UserArticles (has an id, article_id and user_id)

我對如何建立關系感到有些困惑,以便能夠將所有文章連接到用戶,以便可以在控制器中像這樣設置呼叫:

$articles = User::find(Auth::user()->id)->articles->paginate(20);

我認為這是一個多方面的關系,所以我在User模型中使用以下代碼:

public function articles()
{
    return $this->belongsToMany('App\Article', 'user_saved_articles', 'user_id', 'article_id');
}

現在,只要我不在上面要使用的控制器函數上調用paginate(),它就可以工作。 這是我真正的問題所在,因此可以解決

$articles = User::find(Auth::user()->id)->articles;

但與此:

$articles = User::find(Auth::user()->id)->articles->paginate(20);

它提出了錯誤:

FatalErrorException in UserController.php line 217:
Call to undefined method Illuminate\Database\Eloquent\Collection::paginate()

我無法弄清楚為什么我無法對此進行分頁,就像我對其他所有查詢一樣。

如果您將雄辯的關系稱為User::find(Auth::user()->id)->articles屬性,它將自動執行SQL,並返回Collection。 錯誤告訴您您有一個Collection,您不能對其調用paginate()。

如果要引用該關系以添加更多語句,則需要將其作為函數User::find(Auth::user()->id)->articles()進行調用。 這將返回一個QueryBuilder實例,您可以在其中添加語句和/或分頁。

所以這應該工作:

$articles = User::find(Auth::user()->id)->articles()->paginate(20);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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