Laravel 5.2中的Eager Loading无法正常工作

时间:2016-05-28 16:09:10

标签: php laravel frameworks laravel-5.2 eager-loading

我研究了与这个问题有关但但对我的情况不起作用。我现在正在学习Laravel 5.2来学习我的第一个框架。但是我在使用“Eager Loading”的教程中遇到了这个问题。

我不确定是否需要卡片模型,只是为了确保我添加它们。

我想做什么? 我想显示与笔记相关联的用户。

这些是我的代码和文件

CardsController.php

public function show(Card $card)
{

    return $card->notes[0]->user;

}

TABLES:

用户

    Schema::create('users', function (Blueprint $table) {
        $table->increments('id');
        $table->string('username')->unique();
        $table->string('email')->unique();
        $table->string('password');
        $table->timestamps();
    });

备注

Schema::create('notes', function (Blueprint $table) {
            $table->increments('id');
            $table->integer('user_id')->unsigned()->index();
            $table->integer('card_id')->unsigned()->index();
            $table->text('body');
            $table->timestamps();
        });

Schema::create('cards', function (Blueprint $table) {
        $table->increments('id');
        $table->string('title');
        $table->timestamps();
    });

模型: namespaceuse与其他空白模型

相同

user.php的

namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
    public function User()
    {
        return $this->belongsTo(Note::class);
    }
}

Note.php

class Note extends Model
{
    protected $fillable = ['body'];

    public function card()
    {
        return $this->belongsTo(Card::class);
    }
}

Card.php

class Card extends Model
{
    public function notes()
    {
        return $this->hasMany(Note::class);
    }

    public function addNote(Note $note)
    {
        return $this->notes()->save($note);
    }
}

预期输出:

Expected Output Image

我的输出:

我的输出是空白的。浏览器没有显示任何内容。

如果您发现缺少代码,请告诉我,因为我认为代码很重要,因此我缩短了CardsController.php

1 个答案:

答案 0 :(得分:0)

在思考解决方案的过程中突然出现在脑海中。这解决了我的问题。我刚刚在User.php模型中添加了以下代码。它像魔术一样运作。

 public function User()
    {
        return $this->belongsTo(Note::class);
    }