使用create()创建条目时 - 为什么它返回pilot_id
表的关系而不是仅显示pilot_id
的值?
例如,在存储库类中:
public function createFlight()
$flight = App\Flight::create([
'name' => 'Flight 10'
'pilot_id' => 4
]);
return $flight;
}
在控制器中:
public function show()
{
$data = $this->flight->createFlight();
return $data
}
它会在屏幕上返回json,但它没有显示pilot_id的关系表(pilot
)。
答案 0 :(得分:1)
尝试将以下内容添加到您的Flight模型中,就像这样。默认情况下,您需要告诉Laravel包含任何关系。
protected $with = ['pilot'];
每次包含这种关系时都会如此。如果这不合适,那么您将需要在返回航班时加载关系,如此。
return $flight->load(['pilot']);
答案 1 :(得分:1)
它显示pilot_id
是4
,因为这就是它的价值所在。您是否在Flight
上创建了relationship,以便Laravel知道如何检索Pilot
的模型?看起来应该是这样的:
public function pilot()
{
return $this->hasOne('App\Pilot');
}
当您直接从控制器返回模型时,它会调用toJson()
方法将对象转换为字符串。如果要附加相关模型的内容,可以通过将关系添加到$with
模型上的Flight
变量来实现。
protected $with = ['pilot']