1

我正在尝试使用 Eloquent 从数据库中删除对象中的一些元素。

我有一个分配给变量 $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"
}, ...
]

我想要做的是从整个对象中删除那些实体,例如,值“user_id”设置为 2、4 或 5。这个 id 存储在一个数组中。

使用 Eloquent ORM 实现它的最佳方法是什么?使用 Word::where(...) 是不够的,因为据我所知,它只能取一个值。我试图用 foreach 循环来做到这一点,但过去迭代对象 $words 返回时没有任何变化。

4

2 回答 2

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();
于 2013-05-20T17:55:14.057 回答
0

怎么用where_not_in()http://laravel.com/docs/database/fluent

像这样:

DB::table('users')->where_not_in('id', array(2, 4, 5))->get();
于 2013-05-20T17:54:13.840 回答