<?php
class Test extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'foo';
public $timestamps = false;
public function item() {
return $this->hasOne('Entity', 'tid');
}
}
<?php
class Entity extends Eloquent {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'entity';
}
Route::get('foo', function() {
// Assume we fetch one object, just to send it back to the client.
$foo = \Test::find(1);
// Lazy load item.
$foo->item;
// This run fine.
$foo->save();
return $foo;
}
Route::put('foo', function() {
// Then, assume we receive the very same object in a json POST or PUT.
$foo = new Test($inputArray);
// Since we forced the 'item' property in the model, we receive back an SQL exception.
$foo->save();
});
$foo->save()
会触发声明
Column not found: 1054 Unknown column 'item' in 'field list'
。
如何解决这个问题?
==编辑==
添加了更多代码。对不起,上一个问题没有准确指出问题,我后来才意识到这一点。
长话短说:如果我以Eloquent方式加载相关模型,那么Laravel意识到item
属性不需要保存。
如果我将任意值放在同一个属性中,Laravel就不会知道并尝试存储值。这可能是按照设计,无论如何我发现这是一个非常常见的场景,在休息架构中,基本上我可以重新POST或重新PUT数据,因为我从服务器收到。
那么,再次,如何解决这个问题(除了每次都取消设置$ inputArray [&#39; item&#39;]之外)?
答案 0 :(得分:0)
您所呈现的是MySQL错误消息。所以Laravel可能正在做你告诉它做的事情,但是你没有在MySQL数据库中拥有必要的模式来提供它所需要的东西,才能获得成功。检查您的模型项目和表格项目。