Неопределенное свойство: stdClass :: $ salarie - PullRequest
0 голосов
/ 09 июля 2019

У меня есть две таблицы SALARIES и POINTAGES И между ними есть отношение hasMany ownTo, я хочу отобразить для каждой POINTAGE SALARIES, но это дает мне эту ошибку:

Неопределенное свойство: stdClass ::$ salarie

consulter.blade.php

@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>{{ $pointage->salarie->nom }}</td>
</tr>
@endforeach

Pointage.php

 protected $fillable = [
  'salarie_id', 'datep', 'solde', 'nbrj' , 'ouvrage' , 'chantier' , 'prime' ,
];
 public function salarie(){
   return $this->belongsTo('App\Salarie');
 }

Salarie.php

public function pointages(){
  return $this->hasMany('App\Pointage');
}

pointagesмиграция:

public function up(){
  Schema::table('pointages', function (Blueprint $table) {
    $table->integer('salarie_id')->unsigned()->after('id');
    $table->foreign('salarie_id')->references('id')->on('salaries');  
  });
}

SalarieController.php

public function consulter(){
  $salaries = Salarie::with('pointages')->get();
  $pointages = DB::table('pointages')->get();
  return view('salarie.consulter', compact('salaries','pointages'));
}

1 Ответ

0 голосов
/ 09 июля 2019

Если вы хотите использовать отношения, такие как public function salarie() в вашей Pointage модели, вам нужно запросить их.Не используйте DB::table(), используйте Pointage:

$pointages = Pointages::get();

Также, чтобы избежать дополнительных запросов при цикле $pointages, стремитесь загрузить свои отношения:

$pointages = Pointages::with(["salarie"])->get();

В заключение, DB::table() не не возвращает Pointage модель, поэтому вы не можете использовать ->salarie.Используйте вашу модель.

Редактировать: Существует вероятность того, что Pointage не имеет Salarie, поэтому вам нужно с этим справиться.Либо установите связь с запросом ->has(), либо проверьте во время цикла:

$pointages = Pointages::with(["salarie"])->has("salarie")->get();

Или, по вашему мнению:

@if($pointages->salarie)
<td>{{ $pointage->salarie->nom }}</td>
@else
<td>No Salarie...</td>
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...