как объединить несколько таблиц на Laravel Eloquent - PullRequest
1 голос
/ 19 октября 2019

У меня есть 5 таблиц с отношением в базе данных, как это

tbl_petugas:

id | name
1  | jako
2  | miki

tbl_segment:

id|petugas_id|kelompok_jalan_id|date
1 |1         |1                |2-oct

tbl_kelompok_jalan:

id|name
1 |jl kebayoran
2 |jl M said

tbl_kelompok_jalan_pelanggan:

id|kelompok_jalan_id|pelanggan_nometer
1 |1                |112233
2 |1                |223344

tbl_pelanggan:

nometer | name
112233  | vivi
223344  | lala

мне нужно получить все пеланганы, которые присоединяются к петугам с отношением к tbl_segment, это моя красноречивая модель

petugas model:
class Petugas extends Model
{
    public function segment()
    {
        return $this->belongsToMany(Kelompokjalan::class,'tbl_segment');
    }
}

segment model:
class Segment extends Model
{
    public function kelompok()
    {
        return $this->belongsTo(Kelompokjalan::class,'kelompok_jalan_id');
    }

    public function petugas()
    {
        return $this->belongsTo(petugas::class,'petugas_id');
    }
}

kelompokjalan model:
class KelompokJalan extends Model
{
    public function pelanggan()
    {
        return $this->belongsToMany(pelanggan::class,'tbl_kelompok_jalan_pelanggan');
    }

    public function petugas()
    {
        return $this->belongsToMany(petugas::class,'tbl_segment');
    }
}

pelanggan model;
class Pelanggan extends Model
{
    public function kel()
    {
        return $this->belongsTo(kelurahan::class,'kelurahan','kode');
    }

    public function kec()
    {
        return $this->belongsTo(kecamatan::class,'kecamatan','kode');
    }

    public function kelompok()
    {
        return $this->belongsToMany(Kelompokjalan::class,'tbl_kelompok_jalan_pelanggan');
    }
}

я пытаюсь получить пелангган с

$petugas = Petugas::find(3);
return $petugas->segment->kelompok->pelanggan;

но ничего не появляется, кто-нибудь может дать мне подсказку, я застрял .. спасибо ..

Ответы [ 2 ]

0 голосов
/ 19 октября 2019

я получил решение с подсказкой от Дилипа Хирапы

$ petugas = Petugas :: with ('gment.kelompok.pelanggan ') -> whereId (3) -> first ();

и пелангган появится

0 голосов
/ 19 октября 2019
Модели

Petugas и KelompokJalan объединяются как отношения belongsToMany. вы не можете получить прямой доступ при segment->kelompok->pelanggan;

$petugas = Petugas::with('segment.kelompok')->whereId(3)->first();

Теперь проверьте с помощью dd($petugas) или print_r($petugas);, вы получите несколько объектов segment

, попытайтесь использовать пользователя foreach

if(!empty($petugas->segment)){
    foreach($petugas->segment as $segment){
        print_r($segment);
    }

}

Попробуйте использовать foreach, потому что здесь вы не получаете один массив, вы получаете несколько объектов.

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