【问题标题】:LRAVEL Use of undefined constant questions - assumed 'questions' in controllerLARAVEL 使用未定义的常量问题 - 控制器中假设的“问题”
【发布时间】:2020-04-08 11:48:59
【问题描述】:

我在控制器中做这个查询:


public static function listarPreguntasHoy($pagina=1, $cantidad=10){


    if($cantidad<=0){
        $cantidad=10;
            }

            if($pagina<1){
                $pagina=1;
            }
        $pagina--;
$saltar = $pagina*10;


$preguntas = Question::select('questions.id', 'questions.id_user', DATE_FORMAT(questions.date, '%Y-%m-%d'), 'questions.title', 'questions.description', 'users.id', 'users.first_name', 'users.last_name')
->join('users', 'users.id', 'questions.id_user')
->where(DATE(questions.date) == CURDATE())
->get()
->skip($saltar)
->take($cantidad)
->toJson();

echo "<pre>";
 var_dump($preguntas);
echo "</pre>";
die;
return view('preguntasRespuestas')->with('preguntas', json_decode($preguntas));

}

它会抛出这个错误。

错误异常 使用未定义的常量问题 - 假定为“问题”(这将在 PHP 的未来版本中引发错误)。

有什么想法吗?谢谢!

【问题讨论】:

  • -&gt;where(DATE(questions.date) == CURDATE()) 你需要一些引号。
  • 这里:DATE_FORMAT(questions.date, '%Y-%m-%d')。这些是 MySQL 函数,而不是 PHP 函数。您希望您的数据库执行它,因此它必须作为字符串传递。

标签: php laravel


【解决方案1】:

您需要引用这两个部分,但更重要的是,由于您使用的是内置 MySQL 函数,您需要告诉查询使用原始 MySQL:

$preguntas = Question::select('questions.id', 'questions.id_user', DB::raw("DATE_FORMAT(questions.date, '%Y-%m-%d')"), 'questions.title', 'questions.description', 'users.id', 'users.first_name', 'users.last_name')
->join('users', 'users.id', 'questions.id_user')
->whereRaw("DATE(questions.date) = CURDATE()")
->get()
->skip($saltar)
->take($cantidad)
->toJson();

【讨论】:

  • 解决了问题!但我不得不在 where raw 中删除一个 =。有谁知道为什么?
  • 哈,错过了。 MySQL 在 WHERE 子句中使用单个等号进行比较。
猜你喜欢
  • 2018-01-08
  • 1970-01-01
  • 1970-01-01
  • 2020-06-12
  • 2015-10-01
  • 1970-01-01
  • 2014-04-26
  • 2021-05-30
  • 1970-01-01
相关资源
最近更新 更多