PHP。在有说服力的ORM中过滤数据

PHP。在有说服力的ORM中过滤数据,php,orm,filtering,eloquent,Php,Orm,Filtering,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", "

我正试图删除一些元素从对象采取的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"
}, ...
]
我想做的是从整个对象中删除那些具有值“user_id”设置为2、4或5的实体。此id存储在一个数组中


用雄辩的ORM实现它的最佳方法是什么?使用Word::where(…)是不够的,因为据我所知,它只能接受一个值。我试图用foreach循环来实现它,但在迭代对象$words之后,没有任何更改

如何使用
where\u not\u in()

像这样:

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

使用
where_not_in()
怎么样?

像这样:

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

我不清楚您的问题,但如果您想绑定多个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();

我不清楚您的问题,但如果您想绑定多个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();

不幸的是,我在Slim框架中使用的是Eloquent,而不是整个Laravel。不幸的是,我在Slim框架中使用的是Eloquent,而不是整个Laravel。可能还不够理解。很抱歉我不想筛选对象:只从传递给客户端的对象中删除实体,而不是从数据库中删除它们$result=Word::where(函数($query)使用($words){foreach($key=>$value){foreach($id$key){$query->where('id','!=',$key);}}}})->get()谢谢!也许这还不够理解。很抱歉我不想筛选对象:只从传递给客户端的对象中删除实体,而不是从数据库中删除它们$result=Word::where(函数($query)使用($words){foreach($key=>$value){foreach($id$key){$query->where('id','!=',$key);}}}})->get()谢谢!