Php 组合这两个查询并返回最匹配的查询
我有$table,它的“包含”字段为1或0。我有几个Obj记录有“活动”和“包含”字段 第一个场景: $table->is_contain=1 可获得的Obj记录:Php 组合这两个查询并返回最匹配的查询,php,laravel,eloquent,model,Php,Laravel,Eloquent,Model,我有$table,它的“包含”字段为1或0。我有几个Obj记录有“活动”和“包含”字段 第一个场景: $table->is_contain=1 可获得的Obj记录: 'id'=1'活动'=1且'is_contain'=0 'id'=2'活动'=1且'is_contain'=1 应返回id=2的Obj记录 第二种情况: $table->is_contain=1 可获得的Obj记录: 'id'=1'活动'=1且'is_contain'=0 应返回id=1的Obj记录 如果$table->is
- 'id'=1'活动'=1且'is_contain'=0
- 'id'=2'活动'=1且'is_contain'=1
- 'id'=1'活动'=1且'is_contain'=0
$obj=Obj::whereActive(1)->where(function($query)use($table){
if($table->is_contain){
$query->where('is_contain',1)->orWhere('is_contain',0);
}
})
->get();
现在我将其分为两部分,因为如果使用->first(),它将始终返回第一个集合,有时与本例类似,Obj记录“is_contain”字段不是1
$obj=Obj::whereActive(1)->where(function($query)use($table){
if($table->is_contain){
$query->where('is_contain',1);
}
})
->first();
if($obj==null&&$table->is_contain){
$obj=Obj::whereActive(1)->first();
}
有没有办法将这两个查询合并为一个?只需按
排序即可包含
字段,并取第一行:
$obj=obj::wherective(1);
如果($table->is\u contain){
$obj=$obj->orderBy('is_contain','DESC')->first();
}
is\u contain字段为布尔值,orderBy不起作用it@unknownr u使用mysql作为驱动程序?@unknown mysql没有内置布尔类型。但是,它使用了TINYINT(1)。所以它仍然是integer.im使用sequel pro访问我的数据库。是的,它是锡的吗