我正在尝试建立一个页面,用户可以在该页面上添加关于自己的描述,例如,他或她所从事的兴趣是什么,因此我与用户创建了一个单独的表,因此有一个USER表和PROFILE这就是两个表的外观
用户表
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
个人资料表
public function up()
{
Schema::create('profiles', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->string('email')->unique();
$table->string('firstname');
$table->string('lastname');
$table->integer('age');
$table->integer('birthdate');
$table->text('bio');
$table->timestamps();
});
}
在矿山模型中,我设置了与配置文件和用户关系的关系belognsto() 函数在laravel和hasone()中显示模型的外观
user.php
public function profile()
{
return $this->hasOne(Profile::class);
}
profile.php
public function user()
{
return $this->belongsTo(User::class);
}
但是尝试将其添加到刀片时出现错误
{{ $profile->user }}
它说找不到该变量,所以我没有在laravel中设置关系船是否正确,因为它给出了错误或者是其他原因
错误是[属性[用户]在此集合实例上不存在。]
ProfileController.php
public function index()
{
$profile = Profile::all();
return view ('profile.show',compact('profile'));
}
答案 0 :(得分:0)
就像Vahe Shak已经提到的那样,您的个人资料表需要一个外键来显示user_id与users表中的id相关。您的个人资料表迁移需要具有:
$table->integer('user_id');
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
但是编辑迁移不会有效地进行更改。使用新的迁移
php artisan make:migration add_foreign_to_profile
然后迁移应如下所示:
public function up()
{
Schema::table('profiles', function(Blueprint $table)
{
$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade');
});
}
public function down()
{
Schema::table('profiles', function(Blueprint $table)
{
$table->dropForeign('user_id');
});
}
然后您可以运行php artisan migration