【问题标题】:Laravel query screws my variablesLaravel 查询搞砸了我的变量
【发布时间】:2014-02-25 15:08:37
【问题描述】:

控制器:

public function getSpecificPost($id)
{
    $returnArray = with(new Posts)->getSpecificPost($id);

    print_r($returnArray);
}
?>

型号:

public function getSpecificPost($post_id)
{
   //exit($post_id);
   return DB::table('posts')->where('id', $post_id)->toSql();
}
?>

如果我取消注释退出,它会给我一个 1 作为回报。 当我评论退出时我当然会得到一个查询,查询如下:

select * frompostswhereid= ?

它的 Laravel 框架,请帮帮我!

【问题讨论】:

  • 请问您的实际问题是什么?
  • @Markus 执行此操作时出现错误。 SQLSTATE [42S22]:找不到列:1054“字段列表”中的未知列“1”(SQL:从posts中选择id1)@Phil,这里出了什么问题,为什么不显示我传递的 ID?
  • @Markus403 这是不对的。如果您在 select 中添加参数,您将选择该列。但是,这将起作用:return DB::table('posts')->where('id', $post_id)->get();
  • 是的,很抱歉我的误导性评论。打算删除它。然而,对 Chilion 来说最好的办法就是看一下 laravel 文档,看看用什么来满足他的特殊需求:see here

标签: php mysql frameworks laravel


【解决方案1】:

? 是变量的占位符。它将被替换为(在这种情况下)1。见this page上的彩色块:

注意:Laravel 查询构建器始终使用 PDO 参数绑定 保护您的应用程序免受 SQL 注入攻击。没有 需要清理作为绑定传递的字符串。

您知道您实际上并没有执行查询吗?如果您想通过$post_id 获取特定的post,可以将模型中的行更改为这一行:

return DB::table('posts')->where('id', $post_id)->first();

如果你想用 Eloquent 查看所有执行的查询(带有替换的变量!),你可以使用Laravel PHP Debugbar

【讨论】:

  • 不,我不知道。现在,当我按照您的方式进行操作时,它就起作用了。正如我所说,我必须是迟钝的。啊,我的问题被改变了。友好:)
  • 你知道我为什么用first()而不是get()吗?也许这是一个想法,您可以查看Eloquent documentation 以获取更多信息。祝你好运:)
  • 我认为这就像 LIMIT 1;但是,请检查 docxxx。 Tnx 为您解答!
猜你喜欢
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
  • 2014-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-02
  • 1970-01-01
相关资源
最近更新 更多