我是PDO PHP的新手,我确信我没有以有效的方式编写它。我一直在努力研究如何从object
中获取collection
数据,而我这样做的方式很难看。
例如,我有两个表work_orders
和aircraft
。我希望通过使用我aircraft
表中的aircraft_id
字段,从work_orders
表格获得飞机注册。
以下是我在控制器中的内容:
// Temporary injection
$order_number = '502';
// Get the aircraft_id that corresponds to the work order supplied
$aircraft_id = $workorder->select('aircraft_id')
->where('id', $order_number)
->get();
// Assigned the aircraft_id to a variable
$aircraft_id = $aircraft_id[0]->aircraft_id;
// Use the aircraft_id to find get the aircraft data
$aircraft = $aircraft->findOrFail($aircraft_id);
我意识到这已经写了join()
,我确实加入了它,但是我试图解决我的问题来到这里......如果这是有道理的。
我一直想要的部分是我想要只需输入$aircraft_id->aircraft_id
,我最终会碰到同一堵墙。
有没有更好的方法来构建我的查询,还是这就是它的方式?
修改
我的WorkOrder
型号:
public function aircraft()
{
return $this->belongsTo(Aircraft::class);
}
答案 0 :(得分:1)
您可以使用以下代码而不是整个代码:
// Temporary injection
$order_number = '502';
// Use the aircraft_id to find get the aircraft data
$aircraft = $aircraft->findOrFail($workorder->select('aircraft_id')->findOrFail($order_number)->aircraft_id);
而不是:
->where('id', $order_number)->get();
你可以在这里使用
->find($order_number)
(或更好->findOrFail($order_number)
以确保记录存在且您不会对null
采取任何操作) - 它只会使用给定ID的第一条记录。
现在您只需访问属性aircraft_id
即可