Laravel 5.4的关系

时间:2017-07-21 18:35:28

标签: php laravel

您好我需要显示表名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'

2 个答案:

答案 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

希望这有帮助。