First query:
$orders = OrderModel::when($request->has("orderStartDate"), function ($query, $role) use ($request) {
return $query->where("DeliveryDate", ">=", $request->orderStartDate);
})->whereExists(function ($query) use ($request) {
$query->select('orders.*')
->from('orderrecipients')
->join('users', 'users.Id', '=', 'orderrecipients.Users_Id')
->whereRaw('orders.Id = orderrecipients.Orders_Id')
->where('users.Country_Id', $request->country);
})->get();
Second query:
$orders = OrderModel::where(function ($query) {
if($request->has("orderStartDate")) {
$query->where("DeliveryDate", ">=", $request->orderStartDate);
}
})->whereExists(function ($query) use ($request) {
$query->select('orders.*')
->from('orderrecipients')
->join('users', 'users.Id', '=', 'orderrecipients.Users_Id')
->whereRaw('orders.Id = orderrecipients.Orders_Id')
->where('users.Country_Id', $request->country);
})->get();
Third query:
$orders = OrderModel::where(function ($query) {
if($request->has("orderStartDate")) {
$query->where("DeliveryDate", ">=", $request->orderStartDate);
}
if ($request->has("country")) {
$query->select('orders.*')
->from('orderrecipients')
->join('users', 'users.Id', '=', 'orderrecipients.Users_Id')
->whereRaw('orders.Id = orderrecipients.Orders_Id')
->where('users.Country_Id', $request->country);
}
})->get();
At third query I am not confident, that INNER JOIN should be placed in WHERE conditional, perhaps ORM builder knows sequence to join right these query parts
Their nomenclature looks similar, but suspect result query is differ and ORM builder spends different executing time to build mentioned above queries.
Scope of these queries is to get rows from orders table where exist rows in table orderrecipients joined with table users with condition WHERE that was applied to users table.
from Newest questions tagged laravel-5 - Stack Overflow https://ift.tt/2QaJhNz
via IFTTT
Aucun commentaire:
Enregistrer un commentaire