laravel eloquent for hasMany关系不起作用

时间:2017-07-28 15:55:12

标签: php laravel-5 eloquent relationship

我在我的数据库中有这些关系

Schema::create('my_users', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
        $table->string('fullName');
        $table->string('userName');
        $table->string('password');
        $table->string('photo');
        $table->string('email');
    });

Schema::create('posts', function (Blueprint $table) {
        $table->increments('id');
        $table->timestamps();
        $table->string('photo');
        $table->text('caption');
        $table->integer('like');
        $table->integer('my_user_id');
    });

我的模特:

class myUser extends Model
{
    public function post()
    {
        return $this->hasMany('App\post');
    }        

}
 class post extends Model
    {
        public function user()
        {
            return $this->belongsTo('App\myUser');
        }


}

现在我正在尝试使用以下代码获取用户的数据:

$post = post::find(1);        
$user =  $post->user;

但它不起作用且$ user为NULL。 我确信在posts表中有一个id为1的记录。 奇怪的是,当我改变方法的名字时,我没有得到任何错误:

$post = post::find(1);        
$user =  $post->somethingBullshit;

我正在使用laravel 5.3。

请帮忙。

1 个答案:

答案 0 :(得分:0)

确认您是以大写字母开头命名类文件,并相应地修改类声明,例如:

class MyUser extends Model
{
    public function post()
    {
        return $this->hasMany('App\Post');
    }        
}

class Post extends Model
{
    public function user()
    {
        return $this->belongsTo('App\MyUser');
    }
}

然后,您可以在使用eloquent's with()方法获取帖子时选择用户,并从$user变量获取$post变量,或者只使用帖子的用户属性如下:

$post = Post::with('user')->find(1); 
$user = $post->user;