2016-06-07 4 views
0

laravel에서 여러 가지 업데이트 또는 작성 방법에 문제가 있습니다.Laravel Eloquent 여러 조건으로 여러 updateOrCreate

내 문제는 간단합니다.

나는 이와 같은 우정의 테이블을 가지고 있습니다.

user_id_1, user_id_2, point 

우선;

나는 10 포인트의 우정을 나누기를 원한다.

그러나 우정이 없다면 x 점이있는 새로운 우정을 만들어야합니다. 우정은 다음 X 포인트

에 지점을 업데이트 존재하는 경우

난 그냥 where 절에 updateOrCreate 기능이 필요합니다. 물론 model :: insert 메소드처럼 지원된다면 다중 삽입이 가능합니다.

누군가 나를 도울 수 있습니까?

+0

당신이 당신을 무엇 바꿔 수 이러한 사용자 사이에 관계는 당신이 필요로 그냥 코드 예제와 함께 설명합니다 검색 결과 의 포인트 열을 업데이트 관계를 업데이트하지 않으려면 하고 싶으면, 알아 내려고 노력하는 데 어려움을 겪고 있습니다. –

+0

게시물을 편집했습니다. –

답변

0

create는 피벗 테이블을 사용합니다. 설득력있는 많은 관계를보세요 :

https://laravel.com/docs/5.2/eloquent-relationships#many-to-many 

사용자와 추가 모델 또는 테이블 간의 관계를 설계해야합니다. 거기에서 Point 모델에 대한 포인트를 계산할 수 있습니다.

EDIT (요약) : 전체 스키마를 디자인하고 게시하는 방법 (Stackoverflow가 사용되는 방식이 아닌)에 미치지 못하는데, 이것에 대한 해답은 통증이 웅변적 인 것처럼 보이는 것입니다. 그냥 편안한 기능.

+0

예제 코드를 보여줄 수 있습니까? 나는 당신이 혼란 스러우면 –

+0

@ MuratGorken에 영안을 주겠다. 나는 자습서를 훑어보고 웅변 (위의 링크)을 읽는 것이 좋습니다. laravel을 배우려면 laracast를 사용해보십시오. 이것은 꽤 기본적인 것들입니다. –

0

첫 번째 사용자의 ID == user_id_1 또는 == user_id_2와 두 번째 사용자 == user_id_1 또는 == user_id_2를 확인하여 두 사용자가 이미 관계가 있는지 찾기 위해 루프를 만들어야합니다. 는 결과는 null의 경우 :

$user_one=$request->id1; 
$user_two=$request->id2; 
$result= DB::table('your_table_name')->where(function($query) use ($user_one,$user_two){ 
$query->where('user_id_1',$user_one) 
      ->orWhere('user_id_1',$user_two);})->orWhere(function($query) use ($user_one,$user_two){ 
    $query->where('user_id_2',$user_one) 
      ->orWhere('user_id_2',$user_two);})->get(); 
    if(empty(result)) 
    { 
    /* create your relation*/ 
    } 
    else 
    { 
    /*update your point column with x*/ 
    } 
+0

그래, 답장을 보내 주셔서 감사합니다. 그냥 내가이 일을 할 수 있지만 단일 쿼리를 처리하고 싶습니다. 그럴 수 있니? –

관련 문제