我有一个 ModelA,其中包含以下列:姓名、姓氏、电子邮件
我希望名为 Test 的 ModelA 在电子邮件上添加额外的位置
我尝试的是以下
$model_a_res = A::when(
function($query){
return $query->where('name','Test');
},
function ($query) {
$query->where('email', 'NOT LIKE', '%@test%');})
->first();
我希望第二个位置仅在 A 上运行,列名称 = Test 然而,这不起作用。
我用用户名 Mike 和他的电子邮件地址 [电子邮件受保护] 进行了尝试,但他没有出现在结果中。
一些数据
id name email
1 Test [email protected]
2 Test [email protected]
3 Mike [email protected]
4 Mike [email protected]
3 和 4 都应该在结果中 1 和 2 因为他们有 name = Test 将有另一个查询,该查询将检查他的电子邮件中是否有@test,如果有,他将不会被返回 返回的行是 2, 3, 4
您不能为此使用
when()
。
$model_a_res = A::where(function ($query) {
$query->where('name', '!=', 'Test')
->orWhere(function ($query) {
$query->where('name', '=', 'Test')
->where('email', 'NOT LIKE', '%@test%');
});
})->get();
输出
1 Test [email protected] - will skipp
2 Test [email protected] - added
3 Mike [email protected] - added
4 Mike [email protected] - added