在已经检索到模型之后,我可以使用where()函数或其他等效函数吗?例如:
$head = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)
->whereHas('item', function ($q) {
$q->where('type_id', 1);
})->where('wear', 1)->first();
$torso = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 2);
})->where('wear', 1)->first();
if ($torso == null)
$torso = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 3);
})->where('wear', 1)->first();
$hands = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 4);
})->where('wear', 1)->first();
$waist = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 5);
})->where('wear', 1)->first();
$feet = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 6);
})->where('wear', 1)->first();
$amulet = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 8);
})->where('wear', 1)->first();
$first_ring = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 9);
})->where('wear', 1)->first();
$secound_ring = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->where('type_id', 9);
})->where('wear', 2)->first();
$right_hand = Equipment::where('user_id', $fighter->id)->where('lvl_after_reduction', '<=', $fighter->attributes->lvl)->where('durability', '>', 0)->whereHas('item', function ($q) {
$q->whereIn('type_id', [10, 11]);
})->where('wear', 1)->first();我可以将这些查询合并为一个吗?因为我每个页面都有很多对数据库的查询。
对不起,我的英语不好。
发布于 2017-09-04 22:06:15
请将where子句组合到一个函数中,如下所示
$torso = Equipment::where([['user_id', $fighter->id], ['wear', 1]])->first();它干净多了。
是的,可以在运行查询后使用where函数,只要它返回集合。
例如,你可以做
Equipment::all();然后将where子句应用于它返回的集合。这样的查询返回一个eloquent collection。请转到此文档页面https://laravel.com/docs/5.5/eloquent-collections,查看所有可用于口才收集的函数。
但是,使用where子句返回以first()结尾查询的值是不可能的,因为它不返回集合。
https://stackoverflow.com/questions/46038304
复制相似问题