Laravel Eloquent 多个连接
Laravel Eloquent multiple joins
我正在尝试从数据库加载所有商店,包括商店地址和城市详细信息。
店铺
- store_id
- 名字
- 描述
store_address
- store_id
- 街道
- zip
- city_id
城市
- city_id
- 姓名
我已经成功加载了所有商店的地址,但我在按城市 ID 加载城市名称时遇到问题。
这是我目前得到的:
{
"store_id":1,
"name":"Store Name",
"description":"Store description",
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00",
"address":{
"store_id":1,
"street":"Street name",
"zip":00000,
"city_id":1
}
}
我的代码:
$stores = Store::with('address')->get();
class Store extends Eloquent
{
protected $table = 'stores';
protected $primaryKey = 'store_id';
public function address(){
return $this->hasOne('StoreAddress', 'store_id');
}
}
class StoreAddress extends Eloquent
{
protected $table = 'store_address';
protected $primaryKey = 'store_id';
}
所以我只需要通过 city_id 从城市 table 获取城市名称,我找不到这方面的示例。
谢谢。
您应该在 StoreAddress
模型中创建 belongsTo
城市关系。
你需要这样的东西:
class StoreAddress extends Eloquent
{
protected $table = 'store_address';
protected $primaryKey = 'store_id';
public function city()
{
return $this->belongsTo('City', 'city_id');
}
}
当然,您需要为城市创建一个模型(如果您还没有创建的话)。
我正在尝试从数据库加载所有商店,包括商店地址和城市详细信息。
店铺
- store_id
- 名字
- 描述
store_address
- store_id
- 街道
- zip
- city_id
城市
- city_id
- 姓名
我已经成功加载了所有商店的地址,但我在按城市 ID 加载城市名称时遇到问题。
这是我目前得到的:
{
"store_id":1,
"name":"Store Name",
"description":"Store description",
"created_at":"-0001-11-30 00:00:00",
"updated_at":"-0001-11-30 00:00:00",
"address":{
"store_id":1,
"street":"Street name",
"zip":00000,
"city_id":1
}
}
我的代码:
$stores = Store::with('address')->get();
class Store extends Eloquent
{
protected $table = 'stores';
protected $primaryKey = 'store_id';
public function address(){
return $this->hasOne('StoreAddress', 'store_id');
}
}
class StoreAddress extends Eloquent
{
protected $table = 'store_address';
protected $primaryKey = 'store_id';
}
所以我只需要通过 city_id 从城市 table 获取城市名称,我找不到这方面的示例。
谢谢。
您应该在 StoreAddress
模型中创建 belongsTo
城市关系。
你需要这样的东西:
class StoreAddress extends Eloquent
{
protected $table = 'store_address';
protected $primaryKey = 'store_id';
public function city()
{
return $this->belongsTo('City', 'city_id');
}
}
当然,您需要为城市创建一个模型(如果您还没有创建的话)。