【问题标题】:Laravel query with eloquent雄辩的 Laravel 查询
【发布时间】:2021-07-23 02:15:11
【问题描述】:

早上好。

我有一个用 eloquent 无法解决的问题,让我把它放在上下文中。

我有几个农场,我需要该农场的所有订阅者,这些订阅者通过数据透视表取出,然后是这些订阅者的所有收据,到目前为止一切都很好。 问题在于我在收据的日期中设置了一个条件,并且我希望它不会提取不满足该条件的订阅者。

 $estates = Estate::with(['adminEstate.neighbours' => function ($query) use ($past_date_init) {
            $query->with(['receiptHeader' => function ($query2) use ($past_date_init) {
                $query2
                    ->where('receipt_h_billing_init', '<=', $past_date_init)
                    ->where('receipt_h_billing_end', '>=', $past_date_init);
                $query2->with('receiptDetail');
            }
            ]);
        }])->get();

如果他们不满足日期条件,我将无法获得订阅者。

感谢您的帮助

【问题讨论】:

  • 请在查询条件中附上日期的格式。还要确保您的 date 字段已在 $dates var 的模型中设置,因此 laravel 会将您的字段引用为日期。
  • 我认为您想根据应用于您的关系的条件过滤您的基本模型,这意味着您要删除不符合“receiptHeader”条件的adminEstate.neighbours(换句话说'在条件之后不返回数据集)对吗?

标签: php mysql laravel eloquent twig


【解决方案1】:

现在你可以使用

query2
 ->whereDate('receipt_h_billing_init', '<=', $past_date_init)
 ->whereDate('receipt_h_billing_end', '>=', $past_date_init);

query2
     ->whereBetween(DB::raw('Date(receipt_h_billing_init)'),[$past_date_init,  $past_date_init]);

正如你在这里看到的,我没有使用whereBetween,因为它还会比较第一个工作正常的时间

【讨论】:

    猜你喜欢
    • 2018-01-26
    • 2017-11-11
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-24
    • 2021-06-17
    相关资源
    最近更新 更多