我想在发布项目的帖子中显示用户名。但它显示错误:试图在视图文件中获取非对象的属性。
我有用户表和项目表。在项目表中我有外键user_id。但我无法访问用户的名称,甚至无法访问用户表中的用户ID。在项目表中,user_id为0,与用户表中的不同。我该怎么解决这个问题?
用户模型:
public function project()
{
return $this->hasMany('App\Project');
}
项目模型:
public function User() {
return $this->belongsTo('App\User','user_id');
}
迁移用户表:
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
迁移项目表:
Schema::create('projects', function (Blueprint $table) {
$table->increments('id')->unique();
$table->integer('user_id')->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->string('name');
$table->text('description');
$table->date('date');
$table->timestamps('date');
});
查看文件:
@foreach ($projects as $key => $project)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $project->name }}</td>
<td> {{$project->user_id->name}}</td>
<td>{{ $project->description }}</td>
<td>{{ $project->date }}</td>
答案 0 :(得分:0)
您无法访问通过项目ID发布项目的用户。您需要引用该关系,然后调用model属性。像这样:
@foreach ($projects as $project)
<tr>
<td>{{ ++$i }}</td>
<td>{{ $project->name }}</td>
<td> {{$project->user->name}}</td>
<td>{{ $project->description }}</td>
<td>{{ $project->date }}</td>
@endforeach
答案 1 :(得分:0)
1)纠正表格中的小错误,例如user_id和User_id
2)让我解决第一个关系:
一个用户可以有很多项目。 一个项目可以属于一个用户。
模型类解决
class Project extend Modeletcc
{
public function projectusers() {
return $this->hasOne('App\Project', 'user_id', 'id);
}
}
然后从控制器获取数据,如
class ProjectController extends Controller {
// to get data
public function __contstruct() {
$this->project = Project::with('projectusers')->get();
}
// function for ending data to view
public function tesview() {
return view('view whic you wanna send your data',
[
'project_details' => $this->project
]);
}
然后在内部视图中,您可以简单地获取所需的所有数据
@foreach($project_details as $project) {
@foreach($project->projectusers as $users) {
{{ $user->name }}
}
}