Laravel 5.2 中的预加载不起作用
Eager Loading in Laravel 5.2 is not working
我研究了与此问题相关的内容,但没有解决我的情况。我现在正在学习 Laravel 5.2 以学习我的第一个框架。但是我在使用"Eager Loading"的教程中遇到了这个问题。
我不确定是否需要 Card Model 和 Table 但只是为了确保我添加了它们。
我想做什么?
我想显示与笔记关联的用户。
这些是我的代码和文件
CardsController.php
public function show(Card $card)
{
return $card->notes[0]->user;
}
表格:
用户
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();
});
型号:
namespace
和 use
与其他空白的模型相同
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);
}
}
预期输出:
我的输出:
我的输出是空白的。浏览器没有显示任何内容。
如果您发现缺少代码,请告诉我,因为我缩短了 CardsController.php
,因为我认为该代码很重要。
脑子里突然想到解决办法。这解决了我的问题。我刚刚在 User.php
模型中添加了下面的代码。它就像魔术一样奏效。
public function User()
{
return $this->belongsTo(Note::class);
}
我研究了与此问题相关的内容,但没有解决我的情况。我现在正在学习 Laravel 5.2 以学习我的第一个框架。但是我在使用"Eager Loading"的教程中遇到了这个问题。
我不确定是否需要 Card Model 和 Table 但只是为了确保我添加了它们。
我想做什么? 我想显示与笔记关联的用户。
这些是我的代码和文件
CardsController.php
public function show(Card $card)
{
return $card->notes[0]->user;
}
表格:
用户
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();
});
型号:
namespace
和 use
与其他空白的模型相同
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);
}
}
预期输出:
我的输出:
我的输出是空白的。浏览器没有显示任何内容。
如果您发现缺少代码,请告诉我,因为我缩短了 CardsController.php
,因为我认为该代码很重要。
脑子里突然想到解决办法。这解决了我的问题。我刚刚在 User.php
模型中添加了下面的代码。它就像魔术一样奏效。
public function User()
{
return $this->belongsTo(Note::class);
}