【问题标题】:laravel can't retrieve the ID after inserting a rowlaravel插入行后无法检索ID
【发布时间】:2014-08-08 01:58:59
【问题描述】:

这是我的代码

$model = Admin::create(Input::only('username', 'password', 'mobileNumber', 'firstName', 'lastName'));
                echo $model->username; 
                echo $model->ID;
exit;

执行该代码后,我可以在表中看到新行。但我只能看到打印的username

Admin 表已经有一个 ID 字段,它是主键和自动增量。

【问题讨论】:

  • 试试dd($model->toArray()),看看你会得到什么?
  • @WereWolf-TheAlpha 你的意思是 echo dd($model->toArray()) 吗?
  • 没有echo,只有dd(...)
  • @WereWolf-TheAlpha 我得到了array(5) { ["username"]=> string(7) "asdfasdf" ["firstName"]=> string(5) "tonia" ["lastName"]=> string(8) "asdfasdf" ["mobileNumber"]=> string(11) "56456" ["id"]=> int(4) } 似乎ID 变成了id 对吧?
  • 您是否要在 controller 中回显它?它在那里,确保你最后有exit;,否则你将无法看到它,因为模板将加载view

标签: php mysql laravel laravel-4


【解决方案1】:

这是因为您使用的是ID 而不是id,因为dd($model)->toArray()) 显示:

array(5) { 
    ["username"]=> string(7) "asdfasdf"
    ["firstName"]=> string(5) "tonia"
    ["lastName"]=> string(8) "asdfasdf"
    ["mobileNumber"]=> string(11) "56456"
    ["id"]=> int(4) 
}

因此,请确保在每个 field 名称中使用正确的大小写,并始终尝试在表中使用 lower case 字段名称。

【讨论】:

  • 谢谢,但我的专栏是ID 而不是id,而且我还有其他专栏,比如firstName,它有一个大写字母,那么为什么在ID 中它不起作用?
  • 好像是laravel B的bug-)
  • 你应该在字段名中使用lower caselast_name,但是你可以使用whereLastName('someName')Eloquent
  • 因为你用过Input::only('username'),所以表格里是小写的。
  • 看来您是 laravel 方面的专家,请问有没有办法在 create 方法中设置列名?例如,现在我想将id 插入到另一个表中。我应该在create 函数中做什么来告诉它这个id 应该插入到customer 表的adminID 字段中?
猜你喜欢
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
  • 2012-10-29
  • 1970-01-01
  • 2011-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多