Laravel 合并关系表

Laravel merging relationships tables

我在 Laravel 5 中有两个模型(数据库中有两个 table):艺术品和选项(table 名称是艺术品和选项)。一个作品可以有很多选择,所以我的模型如下:

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Artwork extends Model {

    public function options(){
        return $this->hasMany('App\Option');
    }

}

<?php namespace App;

use Illuminate\Database\Eloquent\Model;

class Option extends Model {

    //

}

我正在尝试输出一个数组,该数组将包含所有将在其中嵌套选项的艺术品。仅输出艺术品效果很好(如下所示($artworks = $artwork->get()),但我不知道如何在每个艺术品中合并/嵌套选项。

这是我的路线

get('api/artworks','ArtworksController@index');

这是我的控制器

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use App\Artwork;

class ArtworksController extends Controller {


    public function index(Artwork $artwork)
    {
        $artworks = $artwork->merge($artwork->options())->get();
        return $artworks;
    }

}

我一直在玩那个 merge() 函数,但我就是做不好。是否有可能通过 merge() 实现这一点?

您只需要 eager load options 关系:

$artworks = $artwork->with('options')->get();