Php Laravel雄辩的多重连接

Php Laravel雄辩的多重连接,php,mysql,laravel,eloquent,Php,Mysql,Laravel,Eloquent,我正在尝试从数据库加载所有商店,包括商店地址和城市详细信息 商店 商店标识 名字 描述 存储地址 商店标识 街头 拉链 城市标识 城市 城市标识 名字 我已经成功加载了所有带有地址的商店,但在按城市id加载城市名称时遇到了问题 这就是我目前得到的: { "store_id":1, "name":"Store Name", "description":"Store description", "created_at":"-0001-11-30 00:00:00"

我正在尝试从数据库加载所有商店,包括商店地址和城市详细信息

商店

  • 商店标识
  • 名字
  • 描述
存储地址

  • 商店标识
  • 街头
  • 拉链
  • 城市标识
城市

  • 城市标识
  • 名字
我已经成功加载了所有带有地址的商店,但在按城市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从city表中获取city name,我找不到我要做的示例


谢谢。

您应该在
StoreAddress
模型中创建
belongsTo
城市关系

你需要这样的东西:

class StoreAddress extends Eloquent
{

    protected $table = 'store_address';
    protected $primaryKey = 'store_id';

    public function city()
    {
        return $this->belongsTo('City', 'city_id');
    }

}

当然,您需要为城市创建一个模型(如果您还没有这样做)。

您应该将
belongsTo
城市关系创建到
StoreAddress
模型中

你需要这样的东西:

class StoreAddress extends Eloquent
{

    protected $table = 'store_address';
    protected $primaryKey = 'store_id';

    public function city()
    {
        return $this->belongsTo('City', 'city_id');
    }

}

当然,您需要为城市创建一个模型(如果您还没有这样做的话)。

谢谢,我已经做了类似的工作,但我有一段时间了解了如何在获取商店的查询中调用city()。谢谢,我已经做了类似的工作,但我有一段时间了解了如何在获取商店的查询中调用city()。