Laravel合并关系表

时间:2015-01-24 01:44:51

标签: php database model eloquent laravel-5

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

<?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 {

    //

}

我试图输出一个数组,其中包含所有将其选项嵌套在其中的艺术作品。仅输出艺术作品很好($ artwork = $ artwork-&gt; 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()来实现这一目标?

1 个答案:

答案 0 :(得分:1)

您只需要eager load options关系:

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