принадлежит к метанию Попытка получить свойство 'jenis_bahan' необъекта - PullRequest
0 голосов
/ 26 июня 2019

Модель BahanLab

protected $table = 'bahan_labs';
protected $primaryKey = 'kode_bahan';
protected $fillable = ['kode_bahan', 'nama_bahan', 'kode_sinta', 'kode_jenis', 'harga_bahan', 'stok', 'satuan', 'minimum_stok'];
public $timestamps = false;

public function jenis()
{
    return $this->belongsTo('App\JenisBahan', 'kode_jenis');
}

Модель ДженисБахан

protected $table = 'jenis_bahans';
protected $primaryKey = 'kode_jenis_bahan';
protected $fillable = ['kode_jenis_bahan', 'jenis_bahan'];
public $timestamps = false;

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

Я почти уверен, что это правильно, я уже определил отношения между этими таблицами. Но когда я попытался выполнить цикл echo $ bahan-> jenis-> jenis_bahan, он выдает исключение.

Я уже попробовал какое-то предложение сделать dd ($ bahan-> jenis-> jenis_bahan), и я получил ноль, так что на самом деле происходит?

UPDATE

Контроллер:

$bahans = BahanLab::with('jenis')->get();
return view('bahan.daftar-bahan', compact('bahans'));

Вид:

<tbody>
@foreach($bahans as $bahan)
<tr>
    <td>{{ $bahan['kode_bahan'] }}</td>
    <td>{{ $bahan['nama_bahan'] }}</td>
    <td>{{ $bahan->jenis->jenis_bahan }}</td>
    <td>{{ $bahan['harga_bahan'] }}</td>
    <td>{{ $bahan['stok'] }} {{ $bahan['satuan'] }}</td>
</tr>
@endforeach

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Это произошло потому, что моя таблица I - это строка, а не инкрементное целое число.Таким образом, чтобы решить эту проблему, мне просто нужно было установить

public $incrementing = false;
0 голосов
/ 26 июня 2019

Поскольку вы зацикливаетесь, один из ваших $bahan объектов не имеет jenis объекта (то есть $bahan->jenis равен null, поэтому вы не можете получить доступ к jenis_bahan не-объекта, из которых null). Чтобы справиться с этим, запретите загрузку $bahans, если она не имеет jenis, или проверьте это в цикле:

Controller:

$bahans = BahanLab::has('jenis')->with('jenis')->get();
return view('bahan.daftar-bahan', compact('bahans'));

Или, на ваш взгляд:

<tbody>
@foreach($bahans as $bahan)
<tr>
    <td>{{ $bahan['kode_bahan'] }}</td>
    <td>{{ $bahan['nama_bahan'] }}</td>
    @if($bahan->jenis)
    <td>{{ $bahan->jenis->jenis_bahan }}</td>
    @else
    <td>No Jenis...</td>
    @endif
    <td>{{ $bahan['harga_bahan'] }}</td>
    <td>{{ $bahan['stok'] }} {{ $bahan['satuan'] }}</td>
</tr>
@endforeach

Примечание: эта проверка @if() не нужна при использовании ->has('jenis').

Также вы можете использовать ->with() и ->has() вместе; ->has() ограничивает результаты запроса теми, у которых есть отношение jenis, ->with() нетерпеливо загружает его для увеличения производительности в больших наборах данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...