创建后-为什么没有return关系?

After create - why does it not return relationship?

使用 create() 创建条目时 - 为什么它 return pilot_id table 的关系而不是仅显示 pilot_id 的值?

例如,在存储库中 class:

public function createFlight()
  $flight = App\Flight::create([
     'name' => 'Flight 10'
     'pilot_id' => 4
  ]);

  return $flight;
}

在控制器中:

public function show()
{
   $data = $this->flight->createFlight();
   return $data
}

它会在屏幕上 return json 但它没有显示 pilot_id (pilot) 的关系 pilot_id.

尝试将以下内容添加到您的飞行模型中,就像这样。默认情况下,您需要告诉 Laravel 包含任何关系。

protected $with = ['pilot'];

每次包含关系时都会如此。如果这不是您想要的,那么您将希望在 return 飞行时加载关系,就像这样。

return $flight->load(['pilot']);

它显示 pilot_id4 因为这就是它的值。您是否在 Flight 上创建了 relationship,以便 Laravel 知道如何检索 Pilot 的模型?它应该看起来像这样:

public function pilot()
{
    return $this->hasOne('App\Pilot');
}

当您直接从控制器 return 模型时,它会调用 toJson() 方法将对象转换为字符串。如果您想附加相关模型的内容,您可以通过将关系添加到 Flight 模型上的 $with 变量来实现。

protected $with = ['pilot']