【问题标题】:Using Laravel Raw Query with Placeholder使用 Laravel 原始查询和占位符
【发布时间】:2014-12-09 13:27:26
【问题描述】:

我的模型中有这个查询:

型号:

 class Webmasters {
      public static function webmasters($filt, $cat) {
         $top_pages = DB::table('web.tools')
                ->where('filter',$filt)
                ->where('category', $cat)
                ->limit(20)->get();
         return $top_pages;
}

变量 $filt 和 $cat 作为参数从控制器传递。

我想使用这样的查询:

 class Webmaster {
      public static function webmasters($filt, $cat) {
         $top_pages = DB::select(DB::raw("SELECT *
                                         FROM web.tools
                                         WHERE filter = $filt
                                         WHERE category = $cat
                                         LIMIT 20"));
          return $top_pages;
       }
 }

但是,我现在不知道如何在第二个查询中使用这些占位符。第一个像一个魅力,但第二个给我一个 sql 错误,因为占位符 $filt 和 $cat

【问题讨论】:

    标签: php mysql laravel


    【解决方案1】:

    您可以传递一个参数数组来绑定到选择。

     class Webmaster {
          public static function webmasters($filt, $cat) {
             $top_pages = DB::select(DB::raw("SELECT *
                                             FROM web.tools
                                             WHERE filter = :filter
                                             AND category = :category
                                             LIMIT 20"), [
                                                 ':filter' => $filt,
                                                 ':category' => $cat
                                             ]);
              return $top_pages;
           }
     }
    

    【讨论】:

    • 我已经尝试过了,但是我不断收到指向 where 子句的 SQLSTATE 42601 错误。
    • 您的原始查询有 2 个 WHERE... 您想要 WHERE filter = :filter AND category = :category。
    • 就是这样。对小错误深表歉意。
    猜你喜欢
    • 2016-09-20
    • 2014-06-24
    • 2015-07-01
    • 2020-03-21
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2015-06-23
    • 2021-12-05
    相关资源
    最近更新 更多