我如何在 laravel 中显示带有两个外键的 table
How can i display a table with two foreign keys in laravel
我有 3 table
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 table 并显示它们的 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
你应该使用Laravel Eloquent关系。当您为 DB Table 创建模型文件时,您只需放置与其他模型的关系。
如果 Relation 已设置,那么 Laravel 它会从 Related table.
中自行获取数据
在您的例子中,创建了三个模型。
1) 用户模型。
2) 物品型号。
3) ItemDistributed 模型。
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');
}
}
您可以从 Here 找到更多关于 Eloquent 关系的信息。
我有 3 table
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 table 并显示它们的 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
你应该使用Laravel Eloquent关系。当您为 DB Table 创建模型文件时,您只需放置与其他模型的关系。
如果 Relation 已设置,那么 Laravel 它会从 Related table.
中自行获取数据在您的例子中,创建了三个模型。
1) 用户模型。
2) 物品型号。
3) ItemDistributed 模型。
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');
}
}
您可以从 Here 找到更多关于 Eloquent 关系的信息。