我正在尝试使用Eloquent从DB中删除对象中的一些元素。
我有一个分配给变量$ words
的对象$words = Word::all();
当我将$ words显示为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"
}, ...
]
我想要做的是从整个对象中删除那些例如在2,4或5上设置值“user_id”的实体。这个id存储在一个数组中。
使用Eloquent ORM实现它的最佳方法是什么?使用Word :: where(...)是不够的,因为据我所知,它只能使用一个值。我试图用foreach循环来做,但过去迭代对象$ words返回没有任何变化。
答案 0 :(得分:1)
我没有清楚地理解你的问题,但你可以使用where语句作为闭包,如果你想绑定多个where语句,可以使用你的foreach循环。
这样的事可能有用;
$result = Word::where(function($query) use ($words) {
foreach($words $k => $v)
{
//Whatever you want to bind into where
$query->where($v, '=', 1);
}
})->delete();
答案 1 :(得分:0)
如何使用where_not_in()
?
http://laravel.com/docs/database/fluent
像这样:
DB::table('users')->where_not_in('id', array(2, 4, 5))->get();