【问题标题】:laravel many to many retrieve datalaravel 多对多检索数据
【发布时间】:2017-11-18 22:18:32
【问题描述】:

我有多对多的关系,这就是我正在做的事情:

在 url 中,我正在传递业务表中的业务 ID:

@foreach ($business as $businesses)
        <a target="_blank" href="{{ url('business/' . $businesses->id) }}"> {{($businesses->name) }}
        </a> @endforeach 

然后运行这个函数:

public function displayBusiness($id) {
        $business = Business::find($id)->addresses;
        //return $business;
        //$address = Address::find($id);
        $session = session()->put('key', $id);
        $gallery = Gallery::where('business_id', $id)->get();
        $location = Location::where('business_id', $id)->get();
        $review = Review::where('business_id', $id)->get();
            return view('displayBusiness', compact('business', 'address', 'gallery', 'location', 'review'));
}

但问题是被注释掉的行,带回与业务 id 匹配的结果,但情况并非总是如此,因为有时业务 id = 1 和地址 id = 4 但此代码会带回地址 id = 1

所以我要做的是查看具有 business_id 和 address_id 的联结表,并使用 $id 查找与该 id 匹配的 business_id 和 address_id。

退货业务给我[]

所以我想要的是这样的:

假设 $id = 1 进入business_address,找到匹配1的business_id; 还找到与找到的business_id 匹配的address_id, 将匹配的 id 带回业务表并压缩匹配 id 的结果 地址表也一样

我的模型:

地址.php

public function businesses() {
    return $this->belongsToMany(Business::class, 'business_address', 'business_id', 'address_id');
}

业务.php

public function addresses() {
    return $this->belongsToMany(Address::class, 'business_address', 'address_id', 'business_id');
}

【问题讨论】:

    标签: laravel laravel-5 eloquent


    【解决方案1】:

    我猜每个企业都有很多地址。
    1.这将返回ID为$id的企业

    $business = Business::find($id);
    

    2。这将返回与该业务匹配的所有地址

    $address = $business->addresses;
    

    请注意$address 将返回一个集合而不是单个对象
    让我知道这是否有帮助

    【讨论】:

      猜你喜欢
      • 2017-02-01
      • 2017-01-17
      • 2012-12-26
      • 2013-03-29
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多