【问题标题】:how to select row using laravel Raw query如何使用 laravel Raw 查询选择行
【发布时间】:2019-12-13 15:08:18
【问题描述】:

我想从我的活动表中选择给定日期的所有行。为此,我使用了whereRaw() 子句。这是我的代码:

$activities = Activity::whereRaw('Date(created_at) as date',$date)->get();
dd($activities);

但我得到了一个错误:

SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的“as date”附近使用正确的语法(SQL:select * from activities where Date(created_at) as date)

请帮我解决这个问题。这是$date 中的dd()

"2019-12-12"

【问题讨论】:

  • 您不能在 where 查询中使用列别名,并且您没有尝试绑定任何内容。请参阅laravel.com/docs/5.8/queries#raw-methods 了解如何使用原始方法。
  • 选择给定日期的行抱歉忘记提及
  • 我更新我的帖子请看这个
  • 这更有意义。无论如何,为什么要whereRaw()? Laravel 有一个 whereDate() 方法应该可以解决这个问题。
  • 没问题,乐于助人!通常,除非您特别需要原始查询,否则请尝试对数据库使用 Laravel 方法。请注意,如果您更改了数据库类型(从 MySQL 更改为其他类型),您的 whereRaws 等可能需要更改才能使用这个新数据库。 Laravel 的方法适用于所有(或大多数)数据库,无需修改,因此最好先使用它们。

标签: php mysql laravel


【解决方案1】:

那就去吧:

$activities = Activity::whereDate('created_at', $date)
            ->get();

请记住,$date 必须是日期格式。 请查看https://laravel.com/docs/5.8/queries#where-clauses 以供参考。

【讨论】:

    猜你喜欢
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2017-11-13
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2015-07-31
    相关资源
    最近更新 更多