PHP。在Eloquent ORM中过滤数据

时间:2013-05-20 17:33:40

标签: php orm filtering eloquent

我正在尝试使用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返回没有任何变化。

2 个答案:

答案 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();