Laravel first or new

It seems I have the same error when I use UpdateOrNew or FirstOrNew in Laravel, as far as I know, I implemented the code correctly.

Current code

    $updateOrCreate = Rating::firstOrNew(
        array(
            'user_id' => Auth::user()->id,
            'video_id' => $_POST['videoId']
            )
    );

    $updateOrCreate->user_id = Auth::user()->id;
    $updateOrCreate->video_id = $_POST['videoId'];
    $updateOrCreate->rating =   $_POST['rating'];

    if($updateOrCreate->save()){
        echo "saved";
    }else{
        echo "failed";
        print_r($_POST);
    };

Error

error: {type:Illuminate\Database\Eloquent\MassAssignmentException, message:user_id,…}
file: "/home/celeb/public_html/dev/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php"
line: 411
message: "user_id"
type: "Illuminate\Database\Eloquent\MassAssignmentException"
+4
source share
2 answers

You need to enable mass assignment in your model as such:

class User extends Eloquent {

    protected $fillable = array('first_name', 'last_name', 'email');

}

Thus, any field that can be assigned by mass must be in the variable $ fillable.

Assignment of values ​​without mass assignment:

$user = new User;
$user->id = 3;
$user->name = "Joe";

$user->save();

Assigning Values ​​with Mass Assignment:

$userDetails = array('id' => 3, 'name' => 'Joe');
$user = User::create($userDetails);
+16
source

" create . . , , Eloquent ". [. Laravel Documentation on Eloquent Insert, Update, Delete] (http://laravel.com/docs/5.0/eloquent#insert-update-delete)

, create :

/*$user=*/ User::create(array( 'name' => 'Max', 'email' => 'example@example.com' ));

create , . ( User.php) - , :

protected $fillable = ['name', 'email'];

+2

All Articles