您好我需要显示表名Items
的用户项目。
我有3个模特。
用户模型:
public function userItem()
{
return $this->hasMany('App\UserItem', 'item_id');
}
UserItem模型:
public function user()
{
return $this->belongsTo('App\User', 'user_id');
}
写入Item
模型以使此关系成功的内容。所以我可以显示来自items table
的项目。
如果我现在这样做:
我从DB user_items
表中获取信息。
当我这样做时@foreach(Auth::user()->userItem as $item)
我得到了这个:
未找到列:1054未知列' user_items.user_items'在 ' where where'
答案 0 :(得分:2)
我认为你想要使用多对多的关系
你有2个模型User和Item
和3个表:-users -items -user_items
用户模型应该是这样的:
public function userItem()
{
return $this->belongsToMany('App\Item','user_items','user_id','item_id');
}
和项目型号:
public function user()
{
return $this->belongsToMany('App\User','user_items','item_id','user_id');
}
您需要一个名为user_items
并且您不需要定义userItem模型,您可以删除此模型中的关系
刀片中的使用此代码:
@foreach(Auth::user()->userItem as $item)
答案 1 :(得分:0)
您正在展示多对多关系,并使用一对多关系的方法。对于多对多关系,请在模型中使用以下代码:
//用户模型:
public function userItem()
{
return $this->hasMany('App\UserItem', 'user_items', 'user_id', 'item_id');
}
// userItem Model:
public function user()
{
return $this->hasMany('App\User', 'user_items', 'item_id', 'user_id');
}
对于多对多关系,您需要在两个模型上使用hasMany方法。
有关hasMany方法的参数以及有关多对多关系的其他信息的信息,请阅读有关多对多关系的文档:https://laravel.com/docs/5.4/eloquent-relationships#many-to-many
希望这有帮助。