質問

I get the following errors when i am trying to save the data with the file upload function because I have declared a new uploader_id to my table which should get its value from the relationship I wrote in the model.

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))

In my models I defined the following

User Model: where assets its the table name for the uploads table in database

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

Upload Model:

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

I have tried in my controller where i am using Upload::create(array()) function to post the data to the database, to add another parameter called 'uploader_id' => Auth::user()->id; but none of this work.

What is the best way to pass the uploader_id to the form each time the user uploads a file ?

役に立ちましたか?

解決

That's what events are for:

class Asset extends Eloquent {

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

他のヒント

Also your relationships should reference their class -

return $this->hasMany('Asset');
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top