我有3个表格如下:
市场
Market_to_City
城市
和一个看起来像的模型:
class Market extends Eloquent {
protected $table = 'Market';
public function citys() {
return $this->belongsToMany('City', 'Market_to_City', 'market_id', 'city_id');
}
}
每个市场都有许多城市通过Market_to_City表进行映射。城市方法应该返回与市场相关的城市集合。然而,每次都返回一个空集合,我使用正确的模型关系吗?
答案 0 :(得分:2)
您的方法看起来是正确的。但请注意,您已将其命名为citys
而不是cities
,这可能是也可能不是在此处发布您的问题时的拼写错误。正确的复数形式的city
是cities
,你应该纠正它,因为Laravel经常使用自动复数并假设你的英语是正确的。
此外,您的模型名为Market
,而在评论中您正在调用GTM_Market
。
它还假设Market
对象没有cities
属性,因此它将成功回退到然后触发关系查询的方法。如果您事先声明了该属性,Laravel将永远不会达到该方法。
class Market extends Eloquent {
public $cities = 'Foo';
public function cities()
{
return $this->belongsToMany('City');
}
}
$market = Market::find(205);
echo $market->cities; // Echoes 'Foo' instead of the relationship.
最后,在完成上述所有操作后,您可以像这样急切地加载关系:
Market::with('cities')->find(205);