Laravel关系(用户上传)

时间:2014-03-04 01:20:11

标签: database laravel relationships

当我尝试使用文件上传功能保存数据时,我收到以下错误,因为我已经向我的表声明了一个新的uploader_id,它应该从我在模型中写的关系中获取它的值。

Illuminate \ Database \ QueryException
SQLSTATE[HY000]: General error: 1364 Field 'uploader_id' doesn't have a default value (SQL: insert into `assets` (`filename`, `title`, `body`, `filepath`, `extension`, `realpath`, `mime`, `updated_at`, `created_at`) values (users.mov, New, dummy text data. , /uploads/User Test/2014-03-04_00:48, mov, /private/var/tmp/phpHDpmEI, video/quicktime, 2014-03-04 00:48:59, 2014-03-04 00:48:59))

在我的模型中,我定义了以下内容

用户模型:其中资产是数据库中上传表的表名

public function assets() {
    return hasMany('assets');
}

上传模型:

public function user() {
    return belongsTo('user', 'uploader_id');
}

我在我的控制器中尝试使用Upload :: create(array())函数将数据发布到数据库,添加另一个名为'uploader_id'=>的参数。 AUTH ::用户() - >编号;但这一切都没有。

每次用户上传文件时,将uploader_id传递给表单的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

这就是事件的用途:

class Asset extends Eloquent {

    public static function boot()
    {
        static::creating(function($model)
        {
            $model->uploader_id = Auth::user()->id;
        });
    }
}

答案 1 :(得分:0)

您的关系也应该引用他们的班级 -

return $this->hasMany('Asset');