我在我的数据库中有这些关系
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。
请帮忙。答案 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;