Php Laravel 5.2试图获取用户id帖子

Php Laravel 5.2试图获取用户id帖子,php,laravel,laravel-5.2,laravel-eloquent,Php,Laravel,Laravel 5.2,Laravel Eloquent,我在Udemy上学习Laravel课程,虽然我遵循了老师所做的一切,但由于一些奇怪的原因,我没有得到预期的结果 这是一对一的关系,我在用户模型中添加了一个函数来检查它是否有帖子 然后,如果用户id等于,则添加显示post的路由 app\User.php public function post() { return $this->hasOne('App\Post'); } public function post() { return $this->hasOne

我在Udemy上学习Laravel课程,虽然我遵循了老师所做的一切,但由于一些奇怪的原因,我没有得到预期的结果

这是一对一的关系,我在用户模型中添加了一个函数来检查它是否有帖子

然后,如果用户id等于,则添加显示post的路由

app\User.php

public function post() {

    return $this->hasOne('App\Post');

}
public function post() {
    return $this->hasOne('App\Post');
}
app\Http\routes.php

    Route::get('/user/{id}/post', function($id) {

    return User::find($id)->post;

});
下面是数据库的屏幕截图,显示我在posts表中有一篇用户_id=1的帖子。我在用户表中还有一个id=1的用户。 为什么访问域/用户/1/帖子时会出现空白页

Sohel,我从你的函数中得到了一个结果,但不得不使用

var_dump(User::with('post')->where('id',1)->first());
然后尝试了其他方法:

return User::with('post')->where('id',$id)->first();
这就是结果:

{"id":1,"name":"Nick","email":"nick@kriogen.name","created_at":"2018-03-15 09:49:51","updated_at":"2018-03-15 09:49:51","post":null}
public function getPost {
    $user= User::find($id);
    return $user->post;
}

我想如果你想检查用户是否有帖子,你需要
->hasMany()
关系,因为用户可以有很多帖子。。。代码是:

public function posts() {
    return $this->hasMany('App\Post');
}
电话:

User::find($id)->posts;

你的一对一关系应该是: app\User.php

public function post() {

    return $this->hasOne('App\Post');

}
public function post() {
    return $this->hasOne('App\Post');
}
app\Post.php

public function user() {
    return $this->hasOne('App\User');
}
您可以尝试在控制器中执行此功能:

public function getPost {
    $user= User::find($id);
    return $user->post();
}

问题不在于函数,而在于数据库中。 列deleted\u at不为空,它将帖子标记为软删除,因此不显示。

由于“用户id”字段位于“帖子”表中,应用程序\用户模型中的关系需要为:

public function post() {
   return $this->hasMany('App\Post');
}
然后,在不带括号的情况下调用它以获得结果:

{"id":1,"name":"Nick","email":"nick@kriogen.name","created_at":"2018-03-15 09:49:51","updated_at":"2018-03-15 09:49:51","post":null}
public function getPost {
    $user= User::find($id);
    return $user->post;
}
使用括号时,将得到生成器而不是结果。例如:

public function getPost {
    $user= User::find($id);
    return $user->post()->get();
}


您是否检查了
laravel.log
文件中是否有任何错误?日志中没有错误。此外,如果我有一个错误,它会显示一个错误,但是,我得到的只是一个空白页,并且日志文件中没有错误。请尝试
return$this->hasOne('App\Post','Post_id','id')。另外,如果您想查看错误,请启用错误报告。请显示什么
dd(User::with('post')->where('id',1)->first())
givesSorry,只需将其计算出来并添加为您所说的答案,然后查看您的评论。谢谢你,是的,这就是我遇到的问题。好吧,这是一对一的关系,因此,我有一个用户,一篇带有该用户ID的帖子。如果我知道他没有,为什么我要检查他是否有超过1篇?也尝试过你的方式,我得到的只是:[],这意味着它想显示一个帖子数组,但没有帖子可显示。你的用户id字段名为“user_id”吗?检查laravel文档的where to please db字段名,如hasOne('App\Post','user\u id'))