2013-05-20 4 views
0

Eloquent를 사용하여 DB에서 가져온 개체에서 일부 요소를 삭제하려고합니다.PHP. Eloquent ORM에서 데이터 필터링

I 객체가 변수 $ 단어

$words = Word::all(); 

내가 그렇게 보이는 JSON으로 $ 단어를 표시하고 있습니다에 할당 :

[ 
{ 
"id": "1", 
"word": "dog", 
"phonetic": "dog", 
"mean": "pies", 
"assoc": "some example text", 
"author_id": "3", 
"user_id": "3" 
}, 
{ 
"id": "2", 
"word": "sun", 
"phonetic": "sun", 
"mean": "słońce", 
"assoc": "lorem ipsun dolor sit amet", 
"author_id": "3", 
"user_id": "2" 
}, ... 
] 

내가 뭘 원하는 전체에서 제거입니다 예를 들어 값이 "user_id"인 엔티티를 2, 4 또는 5로 설정합니다.이 ID는 배열에 저장됩니다.

Eloquent ORM을 사용하여 가장 좋은 방법은 무엇입니까? Word :: using (...)은 내가 아는 한 하나의 값만 가질 수 있기 때문에 충분하지 않습니다. foreach 루프를 사용하여이 작업을 시도했지만 과거에 $ words를 반복하여 변경하지 않고 반환했습니다.

답변

0

나는 명확하게 질문을 이해하지 못했지만, 당신은 폐쇄로 어디에 문을 사용하면 하나 이상의 문을 바인드하려는 내부의 경우 foreach 루프를 사용할 수 있습니다 .

이와 비슷한 기능이 작동 할 수 있습니다.

$result = Word::where(function($query) use ($words) { 
    foreach($words $k => $v) 
    { 
     //Whatever you want to bind into where 
     $query->where($v, '=', 1); 
    } 
})->delete(); 
+0

아마도 충분히 이해할 수 없었을 것입니다. 죄송합니다. 나는 객체를 필터링하지 않아도된다 : 클라이언트 측에 전달하는 객체에서 엔티티 만 제거하고 데이터베이스에서는 삭제하지 않는다. – jonki

+0

적어도 다음과 같이 사용했습니다 : '$ words = Word :: all(); $는 = 말씀이 : (함수 ($ 쿼리) 키를 $로 $로 ($ 단어) { \t \t의 foreach ($ 단어 키 => $ 값) { \t \t \t의 foreach ($ idArray를) {사용할 경우 결과 \t \t \t \t $를 질의 -> ('ID', $ 키 '! =') 어디, \t \t \t} \t \t} \t이}) -> (수),' 감사합니다! – jonki

+0

@jonki; 도움이 된 것을 기쁘게 생각합니다. 천만에요! – Aristona

0

사용 방법은 where_not_in()일까요? 이처럼 http://laravel.com/docs/database/fluent

:

DB::table('users')->where_not_in('id', array(2, 4, 5))->get(); 
+0

불행히도 저는 전체 Laravel이 아닌 Slim 프레임 워크와 함께 Eloquent를 사용하고 있습니다. – jonki