Laravel 4 - 选择相关型号

时间:2014-04-17 11:11:16

标签: php orm laravel laravel-4 eloquent

我有下表

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_categoriesname(我的印象是模型定义将直接帮助拉动相关模型)

可能是什么解决方案?

2 个答案:

答案 0 :(得分:3)

您的查询仅在Joke表上。

你可以加载类别,即。

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

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

答案 1 :(得分:0)

约定实际上是驼峰案例而不是pascal案例,否则Laravel似乎不会自动加载关系。我犯了同样的错误,无法弄清楚为什么我的关系不能自动加载。

public function jokesCategory()