【问题标题】:return if id not null, laravel elequent如果 id 不为 null 则返回,laravel 雄辩
【发布时间】:2020-02-17 04:42:55
【问题描述】:

我已经连接了具有hasManybelongsTo 关系的表。

新娘模特:

public function plans()
{
    return $this->hasMany("App\Plan");
}

计划模型:

public function bridal()
{
    return $this->belongsTo("App\Bridal");
}

我有一个将这些数据返回到端点的查询。

public function bridal()
{

    $bridals = Bridal::with(["plans" => function($query){
        $query->orderBy("plans.plan_price");
    }])
    ->groupBy("place_name")
    ->get();


    return $bridals;

}

一切都很好,除了一件事。在新娘表中,一些 ID 没有计划。所以当我返回数据时,一些bridal id 带有一个空的Plans 数组。

我想阻止这种情况。如果bridal id 没有计划,那么我不想归还那个新娘身份证。我怎样才能在这里实现我想要的?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以使用拥有。如果您只使用has('relation'),则意味着您只想获取在此关系中至少有一个相关模型的模型。

    $bridals = Bridal::with(["plans" => function($query){
            $query->orderBy("plans.plan_price");
        }])->has('plans')
        ->groupBy("place_name")
        ->get();
    

    查看更多信息SO answer

    【讨论】:

    • 谢谢,也感谢您的解释链接。我会检查它作为答案。
    • 乐于助人。
    【解决方案2】:

    在您的查询中添加 whereHas() :这样您将获得有计划的新娘记录

    $bridals = Bridal::with(["plans" => function($query){
           $query->orderBy("plans.plan_price");
       }])
       ->whereHas('plans')
       ->groupBy("place_name")
       ->get();
    

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 1970-01-01
      • 2018-03-09
      • 1970-01-01
      • 2021-05-23
      • 2018-04-11
      • 2023-01-27
      • 2014-10-23
      • 2016-07-03
      相关资源
      最近更新 更多