Laravel Eloquent select(firstornew / firstorcreate / firstorupdate)似乎在包内不起作用

时间:2014-04-19 18:37:44

标签: php laravel package eloquent

我尝试更新软件包(我的第一个)中的数据库记录是不成功的。它是一个文件上传脚本,它假设将文件上传到目录,保存其路径,用户给它的名称和分配给数据库的标签集。插入效果很好。但是,当使用新标签(同名)更新文件时,它只会给我一个空白的响应。我的实现如下:

$filename = Input::get('filename') . '.' . Input::file('file')->getClientOriginalExtension();
$tags = Input::get('tags');

$doc = Document::firstOrNew(array('filename' => $filename));
$doc->tags = $tags;
$saved = $doc->save();

文件模型如下:

class Document extends Eloquent {

    protected $table = 'documents';
    protected $softDelete = true;
    protected $fillable = array('filename');

    public function __construct($attributes = array()) {
        parent::__construct($attributes);
    }

}

我做错了什么?为什么"选择"插入工作完美时不起作用?

1 个答案:

答案 0 :(得分:0)

老问题,但我想我会回答只是为了整洁。您似乎错过了模型中的关系定义:

public function tags()
{
    return $this->hasMany('App\YourTagsModel');
}

另外,您的代码模型应该具有相反的定义:

public function document()
{
    return $this->belongsTo('App\YourDocumentModel');
}