【问题标题】:How to order data by relationship in laravel with paginatation如何通过分页在laravel中按关系排序数据
【发布时间】:2019-02-17 00:45:33
【问题描述】:

这是我的桌子。我需要按降序排列所有帖子。我希望广告帖子在顶部。

结果示例

代码

$data=Post::get();

模型中的关系

public function isAdvertised()
    {
        return $this->hasOne('App\models\PostAdvertise', 'post_id');
    }

【问题讨论】:

标签: php mysql sql database laravel


【解决方案1】:
$posts = Post::orderBy('created_at','desc')->get();

然后您可以将其添加到您的视图中:

@foreach($posts as $post)
    $post->post_advertise->title
@endforeach 

如果它不起作用,我建议您准确发布您所做的事情,例如您的迁移、模型(关系)和控制器。

【讨论】:

    【解决方案2】:

    你可以使用leftJoin

    $data = Post::leftJoin('post_advertise', 'post.id', '=', 'post_advertise.post_id')
        ->orderBy('post_advertise.created_at')
        ->select('post.id', 'post.title', 'post.description')
        ->get();
    

    【讨论】:

      【解决方案3】:

      试试

      $posts = Post::with('isAdvertised')->all();
      $sorted_posts = $posts->sortBy(function ($post, $key) {
          return (is_null($post->isAdvertised) ? 1 : 0);
      });
      

      这将对集合进行排序。

      【讨论】:

      • 我希望在分页中收集也不在 get 或 all 中。
      猜你喜欢
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 2019-11-09
      • 2021-03-18
      相关资源
      最近更新 更多