laravel中控制器的注入模型和返回值与关系

laravel中控制器的注入模型和返回值与关系,laravel,laravel-5,laravel-5.7,Laravel,Laravel 5,Laravel 5.7,我正在尝试在Laravel上构建应用程序,我想知道在控制器函数中注入模型时是否可以使用关系,例如: 我有一个名为Stream的模型和一个名为Standard的模型。标准属于流,因此我的代码如下所示: class Standard extends Model { /** * The attributes that are mass assignable. * * @var array */ protected $guarded = [];

我正在尝试在Laravel上构建应用程序,我想知道在控制器函数中注入模型时是否可以使用关系,例如:

我有一个名为Stream的模型和一个名为Standard的模型。标准属于流,因此我的代码如下所示:

class Standard extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $guarded = [];

    public function stream()
    {
        return $this->belongsTo('Models\Stream', 'stream_id', 'id');
    }
}
现在,在我的StandardController中,我有以下函数来显示模型:

public function show(Standard $standard)
{
    return response()->json(['data' => $standard], 200);
}
我试图使用return-response->json['data'=>$standard->with'stream'],200;但它并没有相应地发挥作用。有人能建议我如何在这种情况下执行吗

谢谢。

随附适用于您最初购买模型的时间。如果您已经有了这些模型,则可以改用load。这就是所谓的


您在这里有几个选项:

1你可以利用。这是我喜欢的方法

2如果API资源不是你喜欢的,你只需要以某种方式加载关系。一种方法是$standard->load'stream。另一种方法是只访问关系:$standard->stream

这里发生的事情是,任何访问的关系都会将其转换为模型的关系键,这使得默认的json序列化有点不可预测。因此,我更喜欢显式地使用API资源

3您可以修改标准模型的$with数组以包含流,但我不喜欢这种方法,因为这意味着每次获取标准记录时,它们都会自动获取流关系


with是一个调用雄辩的生成器对象的方法,该对象将为其获取关系。在本例中,您使用的是模型实例,而不是雄辩的生成器。

请尝试此代码。更多详细解释请访问

你是说$standard->load'stream'即延迟加载?
public function show(Standard $standard)
{
    $standard->load('stream');

    return response()->json(['data' => $standard], 200);
} 
$standard->load('stream');
return response()->json(['data' => $standard], 200);