簡體   English   中英

Laravel 加入子查詢

[英]Laravel join with sub query

我有兩個模型 User 和 Address,一個用戶可以有多個地址,但我只想獲取哪個是primary(where primary=true)

這是我嘗試過的,並且我在列表中獲得了多個用戶

$users = User::join('addresses', 'addresses.user_id', 'users.id')
             ->select('name','phone_number','address','landmark','city','state','pincode','users.status')
             ->get();

我也試過這個,但我沒有得到任何數據

$users = User::join('addresses', 'addresses.user_id', 'users.id')
             ->where('addresses.primary', true)
             ->select('name','phone_number','address','landmark','city','state','pincode','users.status')
             ->get();

謝謝

Collection {#375 ▼
  #items: array:8 [▼
    0 => User {#376 ▶}
    1 => User {#377 ▼
      #attributes: array:9 [▼
        "name" => "Colin Sushanth"
        "phone_number" => "9987217545"
        "address" => "2nd Cross 3rd street, y this is my address"
        "landmark" => "Near the address"
        "city" => "Mangalore"
        "state" => "Karnataka"
        "pincode" => 575002
        "status" => "valid"
        "primary" => "true"
      ]
    }
    2 => User {#378 ▶}
  ]
}

你應該試試這個:

$users = User::join('addresses', 'addresses.user_id', 'users.id')
             ->where('addresses.primary','=',1)
             ->select('name','phone_number','address','landmark','city','state','pincode','users.status')
             ->get();

或者:

$users = User::join('addresses', 'addresses.user_id', 'users.id')
                 ->where('addresses.primary','=',true)
                 ->select('name','phone_number','address','landmark','city','state','pincode','users.status')
                 ->get();

更新答案

刀片文件:

@if(isset($users))

  @foreach($users as $user)

    @if($user->primary === 'true')

        //Your code

    @endif

  @endforeach

@endif

我會使用雄辯的模型來做到這一點

所以你會做嗎

User::whereHas('primary')->pluck('name','phone_number','address','landmark','city','state','pincode','users.status')

你的模型看起來像這樣

 public function addresses()
    {
        return $this->belongsTo('App\Models\Address');
    }

    public function primary()
    {
        return $this->addresses->primary == true;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM