【问题标题】:show rows with a relation before in Laravel在 Laravel 中显示具有关系的行
【发布时间】:2017-10-03 16:46:48
【问题描述】:

在 Laravel 应用程序中,我有一个 companies 列表。其中一些与1 x n relation 中的subscriptions 表相关。

我想对公司进行排序,使订阅的公司出现在仅使用一个 db 查询的公司之前。

非常感谢任何想法!

谢谢!

【问题讨论】:

  • 一个公司可以有多个订阅?就是这样的关系?
  • 好吧,从技术上讲它可以,因为订阅持续一年:)。但我认为这无关紧要:)
  • 我问是因为这样我就可以告诉你可以进行什么样的查询。告诉我他们之间的确切关系。
  • 正如我所说,是的,一家公司可以拥有多个订阅。

标签: laravel subquery sql-order-by laravel-query-builder


【解决方案1】:

Laravel 使用单独的查询来预先加载关系。因此,如果您想这样做,您需要加入表格并按...

表格中的某些东西...

$companies = App\Companies::join('subscriptions as sub', 'sub.company_id', '=', 'company.id')
    ->orderBy('sub.somefield', 'DESC')
    ->select(what you need)
    ->with('if you need the relation data');

你知道你也只能查询那些与

有关系的记录
$companies = App\Companies::has('subscription')->get();

也许这就是你所需要的......和

$companies = App\Companies::doesntHave('subscription')->get();

...返回公司没有订阅的相反...

【讨论】:

    猜你喜欢
    • 2020-08-21
    • 2019-05-03
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多