Darama
Darama

Reputation: 3380

How to update field in table Laravel or create?

I try to update field rate in table by primary key user_id.

So, I need to increment of decrement rate field. If row is not exist I need to create it.

I tried:

$this->point = -1; // Or $this->point = 1;
Rating::updateOrCreate(["user_id", $id], ["rate" => $this->point]);

But it does not work:

SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'where clause' (SQL: select * from `rating` where (`0` = user_id and `1` = 5) limit 1)

Upvotes: 0

Views: 658

Answers (2)

wSkc
wSkc

Reputation: 159

Laravel (eloquent) provides a fluent way to update related models.
Assuming the following model structure:

Rating.php

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

User.php

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

You can easily update the relation via associate()

$user = User::findOrFail($userId);
$rating = Rating::findOrFail($ratingId);  

$rating->user()->associate($user)->save();

Read more about Relationships in Eloquent

Upvotes: 1

Rwd
Rwd

Reputation: 35220

This is because your passing the column and the value as two separate values.

Change:

["user_id", $id]

to:

["user_id" => $id]

Hope this helps!

Upvotes: 2

Related Questions