這些的同名領域是我有型號:Laravel hasManyThrough問題與表
class User extends Eloquent
{
public function categories()
{
return $this->hasMany('Category');
}
public function forms()
{
return $this->hasManyThrough('App\Models\Form', 'Category');
}
}
class Category extends \Eloquent {
public function user()
{
return $this->belongsTo('User');
}
public function forms()
{
return $this->hasMany('App\Models\Form');
}
}
namespace App\Models;
class Form extends \Eloquent {
public function category()
{
return $this->belongsTo('Category');
}
}
現在我想通過它id
一個Form
,使其放心,Form
belongsTo
特定User
。
所以我使用:
$form = $user->forms()->find($id);
它工作正常,但這裏附帶了其顯示Category
問題。 name
而不是顯示Form
。 name
。我知道它是因爲這兩張表都有名爲name
的字段。我可以更改字段名稱,但它不是一個好的解決方案。
如何以最佳方式擺脫此問題?
我覺得你有一個不同的問題。 find()已經做了first()。你提出的語句相當於:'$ user-> forms() - > where('id','=',$ id) - > first() - > first()'。 – patricus 2015-02-11 18:48:44
@patricus你是正確的問題是在別的地方。我將刪除這個答案。你有什麼建議嗎? – itsazzad 2015-02-12 01:46:47
那麼,你必須做更多的事情來證明你確實有問題。由hasManyThrough關係生成的查詢不會從中間表中選擇字段,所以它沒有任何意義,它會顯示來自該表的數據。您可以通過轉儲使用'var_dump(DB :: getQueryLog());'運行的查詢來驗證這一點。 – patricus 2015-02-12 01:58:32