【问题标题】:How to parse an array within a query builder's get()如何在查询构建器的 get() 中解析数组
【发布时间】:2019-05-25 13:18:59
【问题描述】:

我有我的 Country 模型和 State 模型。只有拥有state的国家才能显示state,或者返回[];

我想一击将其返回到我的响应对象中,但我无法全神贯注地获取正在查询中运行的当前国家/地区的 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,我必须在我的子查询功能中添加什么?还是我处理错了,有一种更有说服力的实施方式?

【问题讨论】:

  • 'countries' 表是否有 state_id,'states' 表是否有 country_id?如果是这样,我将路由模型绑定,然后通过创建 hasMany 关系返回属性。如果您想了解更多细节,请告诉我,但下面的答案确实在正确的轨道上,只是没有正确解释。
  • 您好。请尽量避免对软件工程师做出性别假设,因为这可能不受欢迎。无论如何,我们倾向于减少问候和问候。谢谢。

标签: laravel


【解决方案1】:

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

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

那么您可以通过它获得所有国家及其州:

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

【讨论】:

  • 你很快就会因为那个没有解决任何与我的问题相关的答案而被否决,不过我非常感谢你的努力,谢谢 Gamal。
  • 你对这个答案有什么问题? @erezt
猜你喜欢
  • 1970-01-01
  • 2015-03-09
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-02
相关资源
最近更新 更多