当我获取模型关系然后尝试更新时,Laravel4 Eloquent错误

时间:2014-05-02 17:37:58

标签: php laravel laravel-4 eloquent

<?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;]之外)?

1 个答案:

答案 0 :(得分:0)

您所呈现的是MySQL错误消息。所以Laravel可能正在做你告诉它做的事情,但是你没有在MySQL数据库中拥有必要的模式来提供它所需要的东西,才能获得成功。检查您的模型项目和表格项目。