Laravel 试图获得财产';日期';非对象的定义?
我有两个表POINTAGES,它们之间的Employee是一个关系,它有许多和belongs to,我想显示表POINTAGES from SalarieController在尝试获取非object?的属性“datep”时出错 consuse.blade.phpLaravel 试图获得财产';日期';非对象的定义?,laravel,Laravel,我有两个表POINTAGES,它们之间的Employee是一个关系,它有许多和belongs to,我想显示表POINTAGES from SalarieController在尝试获取非object?的属性“datep”时出错 consuse.blade.php <table id="example" class="table table-striped table-bordered"> <thead> <tr&g
<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>
路线
Route::get('consulter', 'SalarieController@consulter');
/**
*
*
* @var array
*/
protected $fillable = [
'salarie_id', 'datep', 'solde', 'nbrj' , 'ouvrage' , 'chantier' , 'prime' ,
];
public function salarie(){
return $this->belongsTo('App\Salarie');
}
模范工薪阶层
public function pointages(){
return $this->hasMany('App\Pointage');
}
模型点年龄
Route::get('consulter', 'SalarieController@consulter');
/**
*
*
* @var array
*/
protected $fillable = [
'salarie_id', 'datep', 'solde', 'nbrj' , 'ouvrage' , 'chantier' , 'prime' ,
];
public function salarie(){
return $this->belongsTo('App\Salarie');
}
移民工薪id
public function up()
{
Schema::table('pointages', function (Blueprint $table) {
$table->integer('salarie_id')->unsigned()->after('id');
$table->foreign('salarie_id')->references('id')->on('salaries');
});
}
方法pulk()
将返回一个从您的id中提取到datep值的数组。因此,您无法通过$pointage->datep
访问该值。同样,你也无法到达其他属性,如chantier、ouvrage。。。使用pluck()
时。只需去掉pulk方法,迭代all()
给出的集合,并从模型中访问值。
您可以在使用模型时执行
Pointage:all()
或DB::table('pointages')->get()使用QueryBuilder时使用code>。出现此问题的原因是您使用了all()
,在集合上使用时,它将返回一个数组(这就是为什么错误显示为非对象
)
您将面临的下一个问题是,您的结果中不会有chantier
、ouvrage
、nbrj
或solde
,因为您使用的是Pulk
,它只会从数据库中的一行返回一个值
(-向下滚动至标题,检索列值列表)
要解决这两个问题,只需将->pull(“datep”,“id”)->all()
更改为get()
这意味着您的控制器方法将类似于:
public function consulter()
{
$salaries = Salarie::with('pointages')->get();
$pointages = DB::table('pointages')->get();
return view('salarie.consulter', compact('salaries','pointages'));
}
或者,如果要使用Eloquent,可以将$pointages
行更改为:
$pointages = Pointage::all();
(不要忘记将模型导入到控制器中)。这是因为您使用了->all()
<集合上的code>all()
将返回一个数组。此外,您正在提取datep
值,因此$pointage
将是datep
值。您将无法访问chantier、ouvrage、nbrj或solde,因为您已使用Pulk.thx作为您的答案,但如何解决此错误?请摆脱Pulk方法,再试一次。我不知道如何写,您可以写salarieController plzi不知道如何写,您可以写salarieController Plz选择代码->Pulk(“日期”,“id”)
在您的代码编辑器中,按delete按钮…@NajibMarzouk刚刚删除->从您的SalarieController:)@TimLewis他给我另一个错误调用未定义的方法Lightning\Database\Query\Builder::all()将->all()
更改为->get()
。