Laravel eloquent 使用来自一个 table 的 ID 来搜索路口 table?

Laravel eloquent use id from one table to search junction table?

所以我有 3 tables

-商务 - ID -地址 - ID -business_address - business_id - address_id

现在,当我进入查看业务页面时,我将 business->id 从业务 table 传递为 $id:

public function displayBusiness($id) {
    $business = Business::find($id);
    $address = Address::find($id);

这一刻绝对可以正常工作,但如果地址有不同的 ID 怎么办?

所以:

    -Business
     - id = 1
    -Address
     - id = 2
    -business_address
     - business_id = 1
     - address_id = 2

那么我该如何修改它,以便当业务中的 id table = 1 它进入 business_address 并找到匹配的地址 id 并带回匹配它的记录

你应该拥有的是一段感情。因此,在您的 Business 模型中,您需要添加以下内容。

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

然后在您的 Address 模型中,您将拥有以下内容。

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

有了这个,您现在可以执行以下操作。

public function displayBusiness($id) {
    $business = Business::with('addresses')->find($id);
}

然后您可以通过 $business->addresses.

访问地址

这完全取决于您目前拥有的东西,因此我假设一个 Address 可以属于多个 Business。如果情况并非如此,您将需要重构您的关系和数据库,因为不需要枢轴 table。