【问题标题】:Laravel Eloquent - Find all records from a given monthLaravel Eloquent - 查找给定月份的所有记录
【发布时间】:2015-11-08 07:43:35
【问题描述】:

我有以下路线。

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 年 10 月”,则 URL 为: /blog/archives/2015-10

在数据库中,记录存储为2015-10-31 11:32:00

但是,即使 published_at 列包含包含我要查找的字符串的记录,查询也没有返回任何内容。

【问题讨论】:

    标签: php mysql laravel eloquent


    【解决方案1】:

    这只是一件小事,您需要将通配符添加到您的查询中:

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

    所以这将寻找从 2015-10 开始的日期。

    【讨论】:

    • 旁注:这当然也会影响按类别和标题进行的搜索,因此如果您有两个类别共享一个前缀,例如“Flow”和“Flower”,您会同时找到这两个类别,如果您选择“流”类别。
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2019-10-04
    • 2017-03-23
    • 2018-09-12
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多