将特定的相关字段添加到响应中

Add specific related field to response

我有一个带有动作的控制器:

public function getCities(): JsonResponse
{
    return response()->json([City::all()], 200);
}

实体城市与国家有关。

如何为结果 City::all() 中的每一项添加 country.id?

您应该查看文档:https://laravel.com/docs/8.x/eloquent-relationships

最好的方法是使用预先加载,使用:

City::with('country')->get();

然后,您可以访问国家 ID,如:

$city->country->id;

Laravel 具有创建虚拟属性的惊人功能。为此,将这些行添加到您的城市模型中:

NOTIFICATION: I assume you have and CountryCity model

public $appends = ['country_id'];

public function getCountryIdAttribute()
{
    $country = CountryCity::where('city_id',$this->id)
    if($country){
        return $country->id;
    }

    return null;
}