2017-02-19 3 views
0

기본 키 user_id에 의해 표의 rate 필드를 업데이트하려고합니다.테이블 Laravel에서 필드를 업데이트하거나 생성하는 방법은 무엇입니까?

그래서 감소 필드 인 rate 필드를 증가시켜야합니다. 행이 존재하지 않으면 그것을 만들 필요가 있습니다.

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

을하지만 그것은 작동하지 않습니다 :

나는 시도 당신이 열 두 개의 별도의 값으로 값을 전달하기 때문에

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

'Rating :: updateOrCreate' 메서드를 제공 할 수 있습니까? 사용중인 코드입니다. – davejal

+0

이것은 단지 모델 – Darama

답변

2

이입니다.

변경 :

["user_id", $id] 

에 :이 도움이

["user_id" => $id] 

희망!

+0

입니다. 작동하지만, 어떻게 업데이트 할 수 있습니까? +1, 증가 및 감소를 의미합니까? – Darama

+0

[updateOrCreate] (https://laravel.com/api/5.2/Illuminate/Database/Eloquent/Builder.html#method_updateOrCreate)는 첫 번째 매개 변수를 속성으로 나타내고 두 번째 매개 변수는 값으로 지정합니다. 시도 : 'Rating :: updateOrCreate – wSkc

+0

@MarcHerzog'updateOrCreate'에 전달한 첫 번째 매개 변수에서와 같이, 예전의 키 값 쌍의 배열입니다. (예 : "update", "$ this-> point" 테이블에 존재하는 속성이며 두 번째 매개 변수는 해당 행을 업데이트하는 데 사용할 키 값 쌍의 배열입니다. –

1

Laravel (능변)은 유창한 방법으로 관련 모델을 업데이트합니다. 다음 모델 구조 가정
:

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

당신은 쉽게 associate()

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

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

를 통해 관계를 업데이트 할 수 있습니다 User.php

Rating.php

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

을에 대해 자세히 알아보기 Relationships in Eloquent

+0

다시 한번 살펴보면, 나는'updateOrCreate'를 사용합니다. – Darama