2014-11-16 23 views
15

bir sütunun adı için diğer ad nasılBen Eloquent adında bir anlamlı modeli var anlamlı

public function scopeJoinWithTags($query) 
    { 
     return $query->leftJoin("tags", "tags.id", "=", "products.tag_id"); 
    } 
:

Products::where("actice", "=", true)->get()->toArray(); 

Şimdi katılmak-ifadeyi eklemek kendisine istiyorum, bir scopeQuery tanımladık

Products::where("actice", "=", true)->joinWithTags->get()->toArray(); 

tamam olduğunu olsun ne ben ne bekliyorsunuz, ama adını değiştirmek istiyor:

Sonra bizim ana sorgu değişir Etiket tablosunu tag_name özelliği, nasıl yapmalıyım? Ben benim sorguda yerde söylemek, demek: Nihai sonuç dizisinde Yani

tags.name AS tag_name 

elimden gelen:

$result[$i]['tag_name']; 

şimdi sahipken için:

$result[$i]['name']; 
+0

çoğaltmak http://stackoverflow.com/questions/ yardımcı laravel mutators

public function getTagNameAttribute() { return $this->attributes['name']; } 

Umut yararlanabilirsiniz ulaşmak için daha temiz bir yol yoktur 17174837/laravel-4-eloquent-column-alias] (http://stackoverflow.com/questions/17174837/laravel-4-eloquent-column-alias) – itachi

cevap

24

En basit yolu Bunu yapmak için ihtiyaç duyduğunuz alanları get() yöntemine eklemeniz ve orada yeniden adlandırmak istediğiniz isimleri de kullanabilirsiniz. Laravel 5.4 On

Products::where("actice", "=", true) 
    ->joinWithTags 
    ->get(['tags.name AS tag_name', 'products.*']) 
    ->toArray(); 
+0

Lütfen ikinci paramın ne olduğunu söyler misiniz? '' actice. * ''? Ürünleri değiştirdim. * Ve işe yarıyor. –

+2

Hata! Üzgünüz, evet ürün olmalıydı. * Ürün tablonuzun tüm alanlarını eklemeniz yeterlidir. – turntwo

+0

Kullandığım yöntem budur, ancak diğer çerçevelerin bunu yerel olarak ilişkilendirilebilir dizilerle ele aldığına dikkat edilmelidir. Laravel'in dışında bıraktığı üzücü. – dKen

0

(önceki sürümü de geçerli değilse bilmiyorum) Eğer select yöntemi ile bunu yapabilir:

Products::where("actice", "=", true) 
    ->joinWithTags 
    ->select('tags.name AS tag_name', 'products.*') 
    ->get(); 

En azından benim için bu temizleyicidir.

+0

Ürün tablosunu nasıl yeniden adlandırabilirim? –

0

de bu

Bu [mümkün

İlgili konular