如何在laravel中显示带有两个外键的表

时间:2016-09-15 10:43:21

标签: laravel laravel-5 laravel-5.2 laravel-5.1

我有3张桌子

Users
-------------
user_id  (PK)
user_name

Items_distributed
-------------
user_id (FK) 
item_id(FK)

Item List
-----------------
item_id(PK)
item_name

现在我需要同时使用user_id和item_id打印Items_distributed表,并显示其item_name和user_name

我不知道如何一次显示两件事 如果我显示item_name或user_name其工作 但是当我尝试打印时它都无法正常工作。 任何人都可以解决我的问题。

这是我打印值的方式

控制器中的

我这样使用 $itemdata=item::orderBy('user_id','desc')->paginate(10); 在视野中 我用

  @foreach($itemdata as $value)  
                    <tr>  
                        <td>{{$value->items->item_name}}</td>  
                        <td>{{$value->users->user_name}}</td>  
                        <td>{!!Html::link("editItem/",'Edit',array('class'=>'btn-sm  btn-warning margin-left-btn'))!!}
                            {!!Html::link("deleteItem/".$value->item_id,'Delete',array('class'=>'btn-sm btn-warning margin-left-btn'))!!}</td>
                    </tr>
  @endforeach

1 个答案:

答案 0 :(得分:2)

你应该使用Laravel Eloquent Relationship。为DB Table创建模型文件时,您只需将关系与其他模型建立起来。

如果设置了Relation,则Laravel会自动从相关表中获取数据。

在您的情况下,创建了三个模型。

1)用户模型。

2)项目模型。

3)ItemDestributed Model。

<强> UserModel.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Items extends Model
{
    /**
     * Other code goes here
    **/
    public function itemDestribution()
    {
        return $this->hasMany('App\ItemDistribution','foreign_key');
    }
}

<强> ItemModel.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class ItemDestribution extends Model
{
    /**
     * Other code goes here
    **/
    public function user()
    {
        return $this->belongsTo('App\User','foreign_key_of_user');
    }

    public function item()
    {
        return $this->belongsTo('App\Item','foreign_key_of_item');
    }
}

<强> ItemDestributionModel.php

AH
1
2
3
BH
21
BT03
CH
CT02
AT10

您可以从Here找到有关Eloquent Relation的更多信息。