[英]Laravel Eager loading of a relationship bettween two models causes a relationship between other models return wrong results
我有兩個名為 Question and Answer 的 Eloquent 模型,它們之間存在一對多關系(一個問題有很多答案)。 Question.php 中的 hasMany 關系稱為answers 。
我還有一個用戶和一個公司 model,它們之間存在多對多關系,它們使用 pivot model,這樣定義:
用戶.php
public function companies()
{
return $this->belongsToMany(Company::class)
->using(CompanyUser::class);
}
公司.php
public function users()
{
return $this->belongsToMany(User::class)
->using(CompanyUser::class);
}
當我檢索一個問題並延遲加載它的答案時:
Question::find(58)->answers;
一切正常。 當我使用急切加載時,問題就來了:
Question::with('answers')->get();
奇怪的事情發生了。 在 Question model 的 answers() 關系方法中,我需要獲取當前用戶的第一家公司才能修改關系:
auth()->user()->companies->first();
我的應用程序中的大多數用戶都有一個公司附屬於他們,當使用急切加載時,雖然auth()->user()->companies返回的不是一個,而是 134 個公司,即使在數據庫中我只有 5 個公司和當前用戶只屬於一個。 當我轉儲auth()->user()->companies集合的內容時,我看到第一家公司 model 存在 130 次,其他 4 家公司也包括在內。
這僅發生在answers()方法中並且僅在使用急切加載時發生。 任何想法為什么?
環境:
我認為您需要獲取有關該問題的更多信息。 我通常做的是插入 ddd() 並檢查查詢選項卡以查看 Laravel 用於獲取數據的查詢。 這可能會更清楚地說明問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.