How can i display a table with two foreign keys in

2019-09-11 12:54发布

问题:

I have 3 tables

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

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

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

Now i need to print Items_distributed table by taking both the user_id and item_id and dispaly their item_name and user_name

i dont know how to display both things at a time if i display either item_name or user_name its working but when i try to print both it is not working . Can any one solve my problem .

This is how i print the values

in controller i use like this $itemdata=item::orderBy('user_id','desc')->paginate(10); and in view i use

  @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:

You should use Laravel Eloquent Relationship. When you create model file for DB Table, You just put relation with other model.

If Relation has set, than Laravel it self fetch data from Related table.

In your case, Three models are created.

1) User Model.

2) Item Model.

3) ItemDestributed Model.

UserModel.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

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

ItemDestributionModel.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');
    }
}

You can find more about Eloquent Relation from Here.