我是laravel的新手,我并不真正了解人际关系如何运用它。我想我只是在" off"我正努力做一些相对简单的事情。
我有2张桌子。 项目和广告资源
inventory 表中的每个条目都有一个标记为 itemid 和 userid 的列。
例如,这可能是表库存及其条目 -
id | userid | itemid | ...
+-----------------------------------
| 1 | 1 | 1 | ...
| 2 | 1 | 4 | ...
| 3 | 1 | 6 | ...
| 4 | 2 | 1 | ...
(有更多列,但这些只是将所有内容链接在一起的列)
基本上,我尝试做的就是获取用户拥有的所有项目。我的常规方法只是使用JOIN查询,但我不确定它在Laravel中是如何工作的。
我有2个非常简单的模型来检索每个表中的数据
Inventory.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Inventory extends Model
{
protected $table = 'inventory';
}
Item.php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
protected $table = 'items';
}
如何获取库存表中每个条目的商品数据?我尝试使用雄辩的文档来定义关系,但我一定做错了。
答案 0 :(得分:2)
在您的情况下,many-to-many
和User
之间存在Item
关系,因此无需使用Inventory
作为模型,导致inventory
表只是一个支点表。
您的模型可能如下所示:
class User extends Model
{
public function inventory_items()
{
return $this->belongsToMany(
'Item', // joined model
'inventory', // pivot table name
'userid', // column name in pivot table
'itemid' // column name in pivot table
);
}
}
您可以使用的用户项目
$user = User::find($user_id);
$items = $user->inventory_items()->get();
同样的技术可以应用于Item
模型。
更新:用于检索其他数据透视表列 - 将inventory_items()
更新为:
public function inventory_items()
{
return $this->belongsToMany(
'Item', // joined model
'inventory', // pivot table name
'userid', // column name in pivot table
'itemid' // column name in pivot table
)->withPivot('column_1', 'column_2')
}