如何通过 laravel 中的一对一关系访问我的 post class

how to access my post class with one to one relationship in laravel

我是 Laravel 的新人。我有两个 classes(User,Post) 并且我想通过使用一对一关系从用户 class 调用 Post class, hasOne(namespace ).这可能吗?它与下面的link视频相同,但代码不同。
https://www.youtube.com/watch?v=Lr28pSlqzV8&list=PLfdtiltiRHWEb-tzSN99Zy-39Y1tKl5DB&index=3
这是我的用户class

    <?php

namespace App;

use Illuminate\Foundation\Auth\User as Authenticatable;
use App\Post;

class User extends Authenticatable
{

    protected $fillable = [
        'name', 'email', 'password',
    ];

    protected $hidden = [
        'password', 'remember_token',
    ];

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

这是routes.php

  Route::get('/user/{id}/post',function ($id){
    return User::find($id)->post->content;

});

我的Postclass

  <?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Post extends Model
{
    use  SoftDeletes;

    protected $dates=['deleted_at'];
    protected $fillable=[
        'title',
        'content'
    ];}

这里我使用 User class 调用了 get 方法,我想检索 posts table内容栏(来自Postclass) 我想知道该怎么做,因为我 运行 这段代码出错了 在 HandleExceptions->handleError('8', 'Trying to get property of non-object', 'C:\xampp\htdocs\cms\app\Http\routes.php', '144', array('id' => '1')) 在 routes.php 第 144 行 这里是tables

我们必须看到 Post class 才能确定,但​​我猜这些表只是空的。用户没有posts,所以User::find($id)->post为null,然后你尝试获取它的内容属性,结果是你得到的错误,因为 null 实际上是非对象 :)。只需生成一些样本数据来检查是否属实。

此外,返回这样的对象将不起作用:

// this will not work
return User::find($id)->post->content;

// do this in the testing phase to see if relationship works
return print_r(User::find($id)->post->content, true);
// or
dd(User::find($id)->post->content);

否则你似乎在正确的轨道上,继续前进!