【问题标题】:Get meta information from the database with Eloquent使用 Eloquent 从数据库中获取元信息
【发布时间】:2021-10-26 18:30:04
【问题描述】:

我可能在这里遗漏了一些简单的东西,但是如何使用 Laravel/Eloquent 获取表的主键?当我执行以下操作时,当它直接在数据库上执行时,我得到了一个不正确的语法错误。

$primarykey = DB::table('table')->whereRaw('SHOW KEYS FROM table WHERE Key_name = "PRIMARY"')->get();

【问题讨论】:

  • 调试您的查询,而不是->get() 执行->toSql(),您将看到whereRaw() 的工作原理并将其替换为selectRaw()
  • 您的查询转换为SELECT * FROM table WHERE SHOW KEYS FROM table WHERE Key_name = "PRIMARY"。您可能需要改用DB::select('SHOW KEYS FROM table WHERE Key_name = "PRIMARY"')
  • @apokryfos 这个解决方案对我有用,请注意您必须将数组作为第二个参数传递,否则会抛出错误DB::select('SHOW KEYS FROM table WHERE Key_name = "PRIMARY"', []);

标签: laravel eloquent


【解决方案1】:

我用下面的代码试了一下,效果很好。

$primarykey = DB::select('SHOW KEYS FROM users WHERE Key_name = "PRIMARY"');

我使用了没有 get 方法的 DB 选择,因为它返回这样的数组

[
     {#3558
       +"Table": "users",
       +"Non_unique": 0,
       +"Key_name": "PRIMARY",
       +"Seq_in_index": 1,
       +"Column_name": "id",
       +"Collation": "A",
       +"Cardinality": 1,
       +"Sub_part": null,
       +"Packed": null,
       +"Null": "",
       +"Index_type": "BTREE",
       +"Comment": "",
       +"Index_comment": "",
     },
   ]

因此,如果您发现其中有任何问题,请尝试告诉我。 谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-31
    • 2014-08-08
    • 1970-01-01
    • 2016-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多