Mam tabele z adresami i kolumną z typem adresu - billing, delivery itp.
Wydaje mi się, że rozsądniejsza byłaby tu relacja 1 do 1 czyli with('billingAddress')->with('deliveryAddress').
Czy jestem w stanie dodać warunek do joina jeszcze w Eloquent?

Metoda has chyba się tu nie sprawdzi bo jak dobrze rozumiem ona służy do wyciągania wierszy rodzica na podstawie warunków dotyczących wierszy dzieci, a ja po prostu chciałem obiekt usera z oboma adresami.


Za pomocą scope wyszło mi się coś takiego ale nie jestem z tego w pełni zadowolony smile.gif

  1. $user = User::find(Auth::id());
  2.  
  3. $user->billingAddress = UserAddress::byUser(Auth::id())->byType('billing')->first();
  4. $user->deliveryAddress = UserAddress::byUser(Auth::id())->byType('delivery')->first();


Dobra.. Było to chyba najprostsze jak się dało...

  1. public function billingAddress()
  2. {
  3. return $this->hasOne('Shop\UserAddress')->where('type', '=', 'billing');
  4. }
  5.  
  6. public function deliveryAddress()
  7. {
  8. return $this->hasOne('Shop\UserAddress')->where('type', '=', 'delivery');
  9. }