我有2个表用户和数据。
用户表中的具有:
id |名称|电子邮件|等等
数据表中的具有:
id | user_id | no_data |等等
我这样创建模型数据
public function users()
{
return $this->HasMany(\App\User::class ,'id');
}
我的控制器:
public function pns()
{
$data = Data::get();
//DB::table('data')
//->join('users','data.user_id','=','users.id')
//->where(['user' => 'something', 'otherThing' =>
// 'otherThing'])
//->get(); // i trying to join this table but still error
return view('admin.data',['data' => $data]);
}
现在我想在表中显示视图数据:
在我的视图刀片上:
<th>No </th>
<th>id </th>
<th>Name </th>
<th>email </th>
@php
$no=0;
@endphp
@foreach ($data as $i)
<tr>
<td class=" ">{{ ++$no }}</td>
<td class=" ">{{ $i->user_id}}</td>
<td class=" ">{{ $i->users->name}}</td>
<td class=" ">{{ $i->email}}</td>
</tr>
显示了此user_id,但无法显示此“名称”并出现错误:
此集合实例上不存在属性[name]。
编辑了我的dd($ data)
#attributes: array:18 [▼
"id" => 1
"user_id" => 6
"email" => 'q@gmail.com'
//etc
"created_at" => "2019-06-18 17:27:54"
"updated_at" => "2019-06-18 17:27:54"
]
答案 0 :(得分:1)
假设,您的一个用户可以拥有多个数据。这是我的解决方法
对于用户模式
class User extends Authenticatable
{
<YOUR OTHER CODES HERE>
public function datas(){
return $this->hasMany(Data::class,'user_id','id');
}
}
对于 Data.php [数据模式]
class Data extends Model{
<YOUR OTHER CODE>
public function userDetail(){
return $this->belongsTo(User::class,'user_id','id');
}
}
通过您的控制器:
$data = Data:with('userDetail')->get();
echo '<pre>';
print_r($data->toArray()); // This will give you an array of data with user details.
答案 1 :(得分:0)
执行此$data = Data::with('users')->get();
答案 2 :(得分:0)
使用此查询
DB::table('data')
->join('users','data.user_id','=','users.id')
->where('user_id','=',1)
// Here you can also add more wheres
// But make sure where column exists in one of queried table i.e in
// users | data
->select([
'no',
'user_id as id',
'name',
'email'
])
->get(); // i trying to join this table but still error
答案 3 :(得分:0)
您需要更新数据模型中的关系
public function users()
{
return $this->hasMany(\App\User::class ,'user_id');
}
应该为有很多而不是有很多,并且 user_id 不是 id
然后使用:$data = Data::with('users')->get();
答案 4 :(得分:0)
在用户模型中使用hasOne
public function data()
{
return $this->hasOne('App\Data', 'user_id');
}
//控制器
return view('admin.data')->with($data);