需要帮助从数据库中提取帖子并根据 created_at 列对其进行排序,但在订单顶部保留粘贴帖子(如在wordpress帖子系统中)。< / p>
粘贴帖子是post_data中的sticky_post列为真
public function index(PostFilter $filter)
{
return Post::with(['author', 'category', 'tags'])
->withTrashed()
->filter($filter)
->paginate(request()->perPage ? request()->perPage : 15);
}
Post Schema如下:
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('slug')->unique();
$table->string('title');
$table->text('body')->nullable();
$table->text('excerpt')->nullable();
$table->string('category_slug');
$table->boolean('sticky_post')->default(false);
$table->dateTime('publish_at')->nullable();
$table->timestamps();
$table->softDeletes();
$table->unsignedInteger('featured_image_id')->nullable();
$table->unsignedInteger('author_id');
$table->foreign('author_id')->references('id')->on('users');
});
感谢您的帮助
答案 0 :(得分:1)
orderBy()
正在寻找:
public function index(PostFilter $filter)
{
return Post::with(['author', 'category', 'tags'])
->withTrashed()
->filter($filter)
->orderBy('sticky_post', 'DESC')
->orderBy('created_at', 'DESC')
->paginate(request()->perPage ? request()->perPage : 15);
}
true
由数据库中的1
(TINYINT(1)
)表示,因此所有粘性帖子都将按降序排序。任何具有相同sticky_post
值的记录都将按created_at
列进行排序。
所有粘性帖子将显示在顶部(最新的第一个),非粘性帖子将显示在粘贴帖子下方(最新的帖子)。