【发布时间】:2019-06-20 23:13:36
【问题描述】:
我想定义表之间的关系,不知道哪里出错了。
这些是我的桌子:
用户
-ID -电子邮件 -等级餐厅
-ID -姓名 -用户身份菜单
-ID -姓名restaurant_menu
-restaurant_id -menu_id -价钱在users 表中,字段level 将由我设置两个字:[user] 或[restaurant]。
用户模型
public function restaurant(){
return $this->hasOne(Restaurant::class);
}
餐厅模型
public function menus(){
return $this->hasMany(Menu::class);
}
菜单模式
public function restaurants(){
return $this->belongsTo(Restaurant::class);
}
我期待这段代码的输出:
$result = $restaurant->where('id',2)->menus()->get();
要记录和关系,但我收到以下错误。
BadMethodCallException 调用未定义的方法 Illuminate\Database\Eloquent\Builder::menus()
我该怎么办?
【问题讨论】:
-
简写你可以使用
$restaurant = Restaurants::find(2)->menus; -
还是一样..
-
@MahdiAlikhani 这是因为您的关系设置不正确。正如我在回答中所说,您应该使用
belongsToMany关系作为您的 Restaurant-vs-Menu 关系。如果您正在努力为您的问题创建适当的表结构,请使用database-design标签创建一个单独的问题。
标签: php jquery laravel collections eloquent