2015-11-08 3 views
0

У меня есть следующий маршрут.Laravel Eloquent - Найти все записи за определенный месяц

Route::get('/blog/{search}/{slug}', array(
    'as' => 'public-blog-filter', 
    function ($search, $slug) { 

     if($search == 'search') { 
     $search = 'title'; 
     } elseif($search == 'category') { 
     $search = 'blog_category_id'; 
     } elseif($search == 'archives') { 
     $search = 'published_at'; 
     } 

     //$blogArticleId = trimIdFromSlug($slug); 
     $blogPosts = Bugz\BlogArticle::where($search, 'LIKE', $slug)->get(); 

     dd($blogPosts); 

     //show the page: 
     $viewData = array(
      'metaTitle'   => 'Blog | ' . config('app.name'), 
      'metaSectionJs'  => 'public-blog-single', 
      'metaSectionParent' => 'public-blog-single', 
      'metaSectionUrl' => '/blog/{slug}' 
    ); 

     return view('public.blog', compact('viewData', 'blogPosts')); 

    } 
)); 

В моем блоге пользователи могут фильтровать постов в блоге: Архивы, Категории или Поиск.

Углубляя то, что они искали, меняю переменную $ search на столбец таблицы базы данных. Тогда slug - это строка, которую я ищу.

Если я нажимаю на "октября 2015 года", то URL является: /блог/Архивы/2015-10

В базе данных хранятся записи, как 2015-10-31 11:32: 00

Однако запрос ничего не возвращает, хотя столбец published_at содержит записи, содержащие строку, которую я ищу.

ответ

2

Это просто незначительная вещь, вам нужно добавить подстановочные к вашему запросу:

$blogPosts = Bugz\BlogArticle::where($search, 'LIKE', $slug.'%')->get(); 

Так это будет выглядеть на даты, начиная с 2015-10.

+0

Примечание: Это, конечно же, также скажется на поиске по категориям и названиям, поэтому, если у вас есть две категории, разделяющие префикс, такие как «Поток» и «Цветок», вы найдете их, если вы выберете категорию «Поток» ». – svrnm

Смежные вопросы