如何使用惰性运算符指定选择字段?
Order::with("country", "pacient")->get();
如何为模型Order
和相关关系指定选择字段,例如:
order.id, country.name, pacient.name,...
答案 0 :(得分:2)
在急切的负载中选择特定列,它将起作用
Order::with('country:id,name', 'pacient:id,name')->get();
请确保在获取关系列时添加关系ID
如果您想要流利的查询 然后
DB::table('orders')
->join('countries', 'countries.id', '=', 'orders.country_id')
->join('pacient', 'pacient.id', '=', 'orders.pacient_id')
->select('order.id', 'country.name', 'pacient.name')
->get();
答案 1 :(得分:0)
以更精细,更“ laravel”的方式进行操作:使用API Resources。
php artisan make:resource OrderResource
app / Http / Resources / OrderResource.php
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class User extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return [
'order_id' => $this->id,
'country_name' => $this->country->name,
'patient' => $this->patient->name,
// ...
];
}
}
在控制器中,您可以执行以下操作:
app / Http / Controllers / MyCoolController.php
use App\Http\Resources\OrderResource;
// ...
public function myCoolMethod()
{
// get your posts:
$orders = Order::all();
return OrderResource::collection($posts);
}