我有两个表POINTAGES和EMPLOYEES,它们之间是一个hasMany和belongsTo关系,我想从中显示表POINTAGES SalarieController给我一个错误,试图获取非对象?的属性“ datep”。
consule.blade.php
onRowClick
SalarieController
<table id="example" class="table table-striped table-bordered">
<thead>
<tr>
<th>date</th>
<th>chantier</th>
<th>ouvrage</th>
<th>nombre jour</th>
<th>solde</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($pointages as $pointage)
<tr>
<td>{{ $pointage->datep }}</td>
<td>{{ $pointage->chantier }}</td>
<td>{{ $pointage->ouvrage }}</td>
<td>{{ $pointage->nbrj }}</td>
<td>{{ $pointage->solde }}</td>
<td></td>
</tr>
@endforeach
</tbody>
</table>
路线
public function consulter()
{
$salaries = Salarie::with('pointages')->get();
$pointages = DB::table('pointages')->pluck("datep","id")->all();
return view('salarie.consulter', compact('salaries','pointages'));
}
萨拉利模范
Route::get('consulter', 'SalarieController@consulter');
模型指针
public function pointages(){
return $this->hasMany('App\Pointage');
}
移民salarie_id
/**
*
*
* @var array
*/
protected $fillable = [
'salarie_id', 'datep', 'solde', 'nbrj' , 'ouvrage' , 'chantier' , 'prime' ,
];
public function salarie(){
return $this->belongsTo('App\Salarie');
}
答案 0 :(得分:1)
方法pluck()
将把您的ID的数组返回给datep值。因此,您无法通过$pointage->datep
访问该值。另外,使用pluck()
时,您无法访问chantier,ouvrage ...等其他属性。只需摆脱pluck方法并遍历all()
给定的集合并访问模型中的值即可。
您可以在使用模型时进行Pointage:all()
或在使用QueryBuilder时进行DB::table('pointages')->get();
。
答案 1 :(得分:1)
出现此问题的原因是因为您使用了all()
,该non-object
在集合中使用时会返回一个数组(这就是为什么错误显示chantier
的原因)。
您要面对的下一个问题是您的结果中不会包含ouvrage
,nbrj
,solde
或pluck
,因为您正在使用->pluck("datep","id")->all()
只会从您数据库中的一行返回单个值
({Pluck-向下滚动至标题正在检索列值列表))。
要解决这两个问题,您只需将get()
更改为public function consulter()
{
$salaries = Salarie::with('pointages')->get();
$pointages = DB::table('pointages')->get();
return view('salarie.consulter', compact('salaries','pointages'));
}
。
这意味着您的控制器方法将类似于:
$pointages
或者,如果您想使用Eloquent,则可以将$pointages = Pointage::all();
行更改为:
|
(不要忘记将模型导入到您的控制器中)。