2015-10-20 44 views
2

我想在laravel的雄辩orm中使用子查询,并且有很多示例,但我的场景有所不同。 Laravel雄辩的ORM集中在模型(每个表都有一个模型),但我的查询是这样的Laravel - 雄辩的子查询选择与模型场景无关

SELECT * FROM (Select * FROM Table Where id <> 12) t WHERE phone = '123456' Or email = '[email protected]' 

所以基本上我为什么要做这个?我要检查/让所有的行,其中电话是123456或电子邮件[email protected] EXCEPT行其中id是。我应该使用什么方法?

+0

我在现在(使用orientdb)文档数据库,这就是为什么我就是这么做的。如果有更好的方法来做这个可以适合于雄辩模型的mysql查询。我将不胜感激。 – Noobish

+2

为什么不只是从表中选择*(电话='123456'或email ='example')和id <> 12'? – patricus

+0

@patricus,谢谢队友,这个查询帮了我。如果你可以在答案中写一点解释,说明为什么这个子查询不能用于雄辩。所以我将其标记为答案 – Noobish

回答

1

您正在编写原始SQL查询,这与Laravel的Eloquent ORM/Query Builder相关性不大。

下面的语句是雄辩的版本,如果你想选择所有的行,其中手机是123456或发送电子邮件是[email protected]除了行其中id是12:

MyModel::where('phone', '12345')->orWhere('email', '[email protected]')->whereNotIn('id', [12])->get(); 

在一个侧面注意,whereNotIn接受一个数组作为参数,所以你也可以这样写:

whereNotIn('id', [1, 2, 3])

+0

感谢您提供的干净解决方案 – Noobish