Laravel 4 - 选择相关模型

Posted

技术标签:

【中文标题】Laravel 4 - 选择相关模型【英文标题】:Laravel 4 - Select related models 【发布时间】:2014-06-01 15:09:49 【问题描述】:

我有下表

Schema::create('jokes_categories', function(Blueprint $table) 
    $table->increments('id');
    $table->string('name');
    $table->string('is_active');
    $table->timestamps();
);

Schema::create('jokes', function(Blueprint $table) 
    $table->increments('id');
    $table->string('content', 200)->unique();;
    $table->enum('is_active', array('Y', 'N'));
    $table->integer('category_id')->unsigned();
    $table->foreign('category_id')->references('id')->on('jokes_categories');
    $table->timestamps();
);

笑话表中category_id是外键,与jokes_categories是一对多关系

在模型中我有以下内容:

class Joke extends \Eloquent 

    public static $rules = array();

    // Don't forget to fill this array
    protected $fillable = array();

    public function JokesCategory()
         return $this->belongsTo('JokesCategory');
    

在控制器中我有以下内容:

$jokes = Joke::all();

但拉不通joke_categories.name(我的印象是模型定义会直接帮助拉取相关模型)

有什么解决办法?

【问题讨论】:

【参考方案1】:

您的查询只是在笑话表上。

您可以预先加载类别,即。

$jokes = Joke::with('JokesCategory')->get();

请参阅文档:http://laravel.com/docs/eloquent#eager-loading

【讨论】:

【参考方案2】:

约定实际上是骆驼大小写而不是帕斯卡大小写,否则 Laravel 似乎不会自动加载关系。我犯了同样的错误,无法弄清楚为什么我的关系没有自动加载。

public function jokesCategory()

【讨论】:

以上是关于Laravel 4 - 选择相关模型的主要内容,如果未能解决你的问题,请参考以下文章

在模型 laravel 的所有选择中显示相关表列

Laravel 4 中相关模型验证的最佳实践?

你如何在 Laravel 4 中插入相关的多态模型

laravel 5 - 获取相关模型值

在 Laravel 中一对多删除相关模型

列表模型如何按 DOWN-VOTES 的数量排序到相关模型 - laravel,雄辩