简体   繁体   中英

Retrieving data from belongsToMany relationship in Laravel

I have some problems with getting data from my relationship. I need the tags of some domains.

$domains = Domains::where('customer_id', Auth::user()->customers_id)->get();

There are all the domains I need. On my Domains model I have this belongsToMany relation to my pivot table.

public function tags() { 
    return $this->belongsToMany('App\Models\Tags_Domains', 'domain_tag', 'domains_id', 'tags_id'); 
}

I was able to get all the datas from my relation with this:

dd($domains[0]->tags);

That gave me all the data I wanted but only for the very first domain. But I want this for every domain, to pass this new array to my Blade template. I tried many things out but couldn't make it work. ( $collection error, trying to get properly of non-object ... )

Can someone help me there?


Controller Code:

    $domains = Domains::where('customer_id', Auth::user()->customers_id)->get();
    return view('defaultLayout.domains.tagsdelete', [
        'domains' => $domains
    ]);

This is because you use $domains[0] and you get the first domain. You must loop through them:

foreach($domains as $domain) {
    foreach($domain->tags as $tag) {
        var_dump($tag);
    }
}

Edit: If you need the tags in your view here is how:

@foreach($domains as $domain)
     <p>{{ $domain->name }}</p> //where name could be any field that $domain has
     @foreach($domain->tags as $tag)
     <p>{{ $tag->name }}</p> //where name could be any field that $tag has
     @endforeach
@endforeach

Glad I was helpful :)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM