因此,我在使用Laravel的热切加载检索信息时遇到了问题。 I.m试图将所有Post对象调用其尊重的用户添加到查询中。
这就是我所拥有的:
查询
public function index()
{
$posts = Post::with('user')->get();
return view('posts.index', compact('posts', $posts));
}
在我的用户和帖子模型中,我每个都定义了,我认为是合适的关系,在这里他们是完全正确的:
<?php
namespace App;
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use Notifiable;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
public function posts() {
return $this->hasMany('App\Post');
}
}
帖子是:
<?php
namespace App;
use App\User;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'title', 'content', 'followers',
];
public function user() {
return $this->belongsTo('App\User');
}
}
我得到的错误只是返回的帖子,没有关于用户的信息,例如他们的名字,我想在显示所有帖子时在帖子索引页面的循环中使用。
我错过了什么吗?
答案 0 :(得分:1)
您可以直接在刀片视图中获取用户数据, 它会自动运行查询本身
交/ index.blade.php
$post->user->attributes
调用该方法时,它等同于
select * from user where user.id = post.user_id
答案 1 :(得分:0)
我解决了这个问题。我做得对,但在尝试打印用户名时,我使用以下代码$ post-&gt; name而不是$ post-&gt; user-&gt; name。抱歉。