如何在查询生成器的get()中解析数组

时间:2018-12-27 13:57:11

标签: laravel

我有国家模型和州模型。只有有州的国家才能显示州或返回[];

我想一击将其返回到响应对象中,但是我无法全神贯注地获取正在查询中运行的当前国家/地区的ID,我现在才构建了此代码:

return response()->responseObject([
                'code'    => 200,
                'status'  => true,
                'message' => 'Retrieved List of Available Countries',
                'data' => Country::where('allow_registration', Country::REGISTRATION_ALLOWED)->get([
                    'id',
                    'name',
                    'iso',
                    'iso3',
                    'prefix',
                    'states' => function($query){}
                ])
            ]);

还有另一个函数正在等待:

public static function getStates($id)
{
    $states = State::where('country_id', $id);
    return $states ? $states : [];
}

我正在接近这个权利吗?为了获得当前的国家/地区ID,我必须在子查询功能中添加什么?还是我解决了这个错误,并且有一种更雄辩的方式实施?

1 个答案:

答案 0 :(得分:0)

在您的country模型中创建states关系

$this->hasMany(State::class);

然后您可以按以下方式获取所有具有其州的国家/地区:

Country::with('states')->get();