我有3张桌子。
与shop_food和store创建hasmany关系时,我需要获取food表数据。
$this->hasMany('App\Diet\ShopFood', 'shop_id', 'id');
答案 0 :(得分:1)
请显示您的代码,以便我们知道您要做什么。 但是我在这里看到的是您的关系有误。
为什么要在多对多关系中分配hasMany?
在您的商店模型中,您可以通过以下方式建立食物关系:
$this->belongsToMany('App\Diet\Food);
然后您可以在打电话时收拾食物
$shop->foods
还有具有Pivot属性的shop_foods
答案 1 :(得分:1)
如果我正确理解,您想在致电foods
时得到shops->shop_foods
。那是不是
//first you call your shops as you want.
Shop::with(['shops_food' => function($query){
//the 'shops_food' relationship should be called within an array
//this way you could query the relationship as the eloquent model.
//that way you could call the 'foods' relationship inside the shops_food relationship.
$query->with('foods')
}])
...
请注意,您必须具有在shop和shop_foods模型中声明的关系
让您的模型像这样
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Shop extends Model
{
//
public function shops_food()
{
//shop_id is the foreing key inside your shop_foods table
return $this->hasMany('App\ShopFood','shop_id');
}
....
}
然后选择ShopFood模型
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class ShopFood extends Model
{
//
public function foods()
{
//shop_food_id is the foreing key inside your foods table
return $this->hasMany('App\Food','shop_food_id');
}
....
}
答案 2 :(得分:1)
这看起来像是您想要的
public function foods() {
$this->hasMany('App\Diet\Food');
}
在您的ShopFood模型和您的Shop模型中
public function shopfoods() {
$this->hasMany('App\Diet\ShopFood')->with('foods');
}
您还可以在Shop模型中建立2个独立的关系:
public function shopfoods() {
$this->hasMany('App\Diet\ShopFood');
}
public function shopfoodsWithFoods() {
$this->hasMany('App\Diet\ShopFood')->with('foods');
}
这样,您可以随时使用所需的任何东西。
但是整个事情还不清楚…… 我什至不知道3表如何连接,所以hasMany只是猜测。 不过,您可以只使用“ with”功能。
PS 还有可能只是声明
protected $with = ['foods'];
在ShopFood模型中,如果您始终希望连接这2个。全部在文档中。