我刚刚为用户创建了个人资料,并希望显示与已登录用户或其他选定用户相关的教育详细信息。
为此,我为用户创建了一个教育模型,并在双方之间建立了适当的关系。我无法从已登录用户或其他用户的教育表中获取任何数据。我在刀片文件中使用了foreach标签。请检查我的代码。谢谢。
教育模式
class Education extends Model
{
use HasFactory;
protected $primaryKey = 'education_id';
public function myusers()
{
return $this->belongsTo('App\Models\User','user_id','education_id');
}
}
用户模型
public function myeducation()
{
return $this->hasMany('App\Models\Education','education_id','user_id');
}
轮廓控制器
public function index()
{
$user = Auth::user();
return view('candidate.profile',['user'=>$user,]);
}
刀片文件
@foreach ($user->myeducation as $education)
<div>
{{ $education->school }}
</div>
@endforeach
教育和用户表结构
**Education Table**
{
Schema::create('education', function (Blueprint $table) {
$table->bigIncrements('education_id');
$table->bigInteger('user_id');
$table->string('school');
$table->string('degree');
$table->string('fieldOfStudy');
$table->date('startDate');
$table->date('endDate');
$table->string('grade');
$table->string('activities');
$table->string('description');
$table->timestamps();
});
}
用户表。
$table->increments('user_id');
$table->bigInteger('role_id');
$table->bigInteger('membership_id')->nullable();
$table->string('firstname');
$table->string('lastname');
没有错误信息,只是空白
Table entries
DB::table('education')
'user_id' => '2',
'school' => 'University of Bedfordshire',
'degree' => 'MBA',
]);
DB::table('users')->insert([
'user_id' => '1',
'role_id' => '1',
'firstname' => 'Mohammed',
'lastname' => 'Sabeel',
.......
]);
DB::table('users')
' user_id' => '2'
'role_id' => '2',
'firstname' => 'zahida',
'lastname' => 'sabeel',
.......
]);
问题出在你的关系中,第二个和第三个参数。您以错误的方式传递密钥。
在Education
模型中使用类似
public function myUser()
{
return $this->belongsTo('App\Models\User', 'user_id');
}
如果您使用主键进行关系,则无需传递第三个参数。尽管您可以传递第三个参数来定义用于连接表的列
public function myUser()
{
return $this->belongsTo('App\Models\User', 'user_id', 'user_id');
// second argument user_id is from your education model while the third argument that is user_id is the primary key of your user model
// i have used singular name for the relationship name with camel case
}
现在在User
模型中
public function myEducations()
{
return $this->hasMany('App\Models\Education', 'user_id');
// user_id is the user_id of education model
// and this is a has many relation i used plural form
}
在laravel文档中阅读有关关系的更多信息
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句