我保存一条记录,然后从数据库返回值,Eloquent没有返回所有值。
示例:
如果我有一个名为names
的MySQL表,请执行以下操作:
| ID | Date | Name |
|----------------------------|-------------------------------------|--------------|
| AUTO INCREMENT PRIMARY KEY | TIMESTAMP DEFAULT CURRENT_TIMESTAMP | VARCHAR(100) |
我有一个名为Names
然后我保存并像这样返回:
function save($sName) {
$oName = new Names();
$oName->Name = $sName;
$oName->save();
$oReturn = new stdClass();
$oReturn->Name = $oName->Name;
$oReturn->Date = $oName->Date;
return $oReturn;
}
它返回:
echo json_encode(save("Test")); // {"Name": "Test", "Date": null}
这是正常的吗?
答案 0 :(得分:1)
是的,这是正常的。 Eloquent不保存,然后执行另一个查询以选择刚刚插入的记录的所有数据。
答案 1 :(得分:1)
您可以手动设置字段date
,只需将此代码添加到您的模式中:
public static function boot()
{
static::creating(function ($model) {
$model->date = date('Y-m-d H:i:s');
});
}
您将避免选择插入项目的第二个DB请求。当您使用date
函数时,请注意时区。
此外,您可以使用getAttributes()
Eloquent方法并摆脱stdClass:
function save($sName)
{
$oName = new Names();
$oName->Name = $sName;
$oName->save();
return $oName->getAttributes();
}