请考虑以下模型:
i=3
应该很容易理解:pnum
因此,您希望以下方法能起作用:
class Character extends Model {
// ...
public function inventory() {
return $this->hasOne(Inventory::class);
}
}
class Inventory extends Model {
// ...
public function items() {
return $this->hasMany(Item::class, 'id', 'item_id');
}
}
class Item extends Model
{
// ....
}
因此,当您执行以下操作时:Character---hasOne-->Inventory--hasMany-->Item
,您应该看到我们里面有一个项目。
我要做的是在没有很多表的情况下做的是:一个角色有一个包含很多物品的库存。
当我们这样做时,以上内容为我提供了:$character->inventory()->create([
'character_id' => $character->id,
'item_id' => 1,
]);
是$character->inventory
。为什么?
答案 0 :(得分:1)
一个角色有一个包含很多物品的物品。
所以关系应该是
class Character extends Model {
public function inventory() {
// there should be an 'character_id' field on Inventory model.
return $this->hasOne(Inventory::class);
}
}
class Inventory extends Model {
public function items() {
// there should be an 'inventory_id' field on Item model.
return $this->hasMany(Item::class);
}
}
class Item extends Model
{
public function inventory() {
return $this->belongsTo(Inventory::class);
}
}
然后您可以创建相关的清单,如下所示:
$inventory = Character::find(1)->inventory()->create([
'name' => 'Inventory 1',
]);
答案 1 :(得分:0)
您在$ character-> inventory()中得到的是空值,因为您没有指定要使用的所有者密钥。
这是Laravel文档中的示例创建方法
$post = App\Post::find(1);
$comment = $post->comments()->create([
'message' => 'A new comment.',
]);
看看这个link