2017-11-12 1 views
1

eine Hilfe nötig mit den Beiträge aus der Datenbank zu holen und sortieren sie nach created_at Säule nach aber klebriger Post (wie in Wordpress Post-System) an der Spitze der Ordnung halten .Laravel Eloquent, um Beiträge von created_at und halten klebrige Post auf Top

Sticky Post ist, wo sticky_post Spalte wahr ist in post-Datenbank

public function index(PostFilter $filter) 
{ 
    return Post::with(['author', 'category', 'tags']) 
     ->withTrashed() 
     ->filter($filter) 
     ->paginate(request()->perPage ? request()->perPage : 15); 
} 

Beitrag Schema ist wie folgt:

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'); 
    }); 

Dank für jede Hilfe

Antwort

1

orderBy() was Sie suchen nach:

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); 
} 

A true durch eine 1 dargestellt wird (TINYINT(1)) in der Datenbank, so dass alle sticky Beiträge werden in absteigender Reihenfolge sortiert werden. Alle Datensätze mit demselben Wert sticky_post werden nach der Spalte created_at sortiert.

Alle klebrigen Beiträge erscheinen oben (neueste zuerst) und nicht-klebrige Beiträge erscheinen unter den klebrigen Beiträgen (neueste zuerst).

Verwandte Themen