2016-03-27 13 views
0

Nesne PageWidgets'un herhangi bir numarası vardır ve her Page-Widget çiftinin özel seçenekleri vardır (örneğin, konum, özel başlık). Laravel: ek alanlarla birlikte

Sadece page_widget masanın (konum, ayarlar ...) için daha fazla sütun eklendi
class Page extends Model { 
    public function widgets(){ 
     return $this->belongsToMany('App\Widget'); 
    } 
} 
... 
class Widget extends Model { 
} 

yaptı.

Bunlara $page->widget->position aracılığıyla nasıl erişebilirim? Ayrıca, position numaralı sayfaya göre sıralanmış sayfa widget'ları alma yeteneğine de ihtiyacım var.

Lütfen Model ilişkilerini önerin. Teşekkürler.

+0

Çoktan çoğa ilişkinizin olduğunu varsayarak, "pages_widget" adlı bir pivot tablonuz var. Sütunları bu tabloya ekleyebilir ve değerlere "pivot" ile erişebilirsiniz. [Dokümanlar] 'da (https://laravel.com/docs/5.1/eloquent-relationships) –

+0

' a Pek çokdan Pek çok ilişkiye ait son bölümü (yani Ara Tablo Sütunları Alma) son bölümüne bakın. Bir _pivot table_, sadece ekstra sütunları olan bir _join table_ (örneğin, 'position'). – Michael

cevap

1

Böyle ekstra alanları ekleyebilirsiniz:

class Page extends Model { 
    public function widgets(){ 
     return $this->belongsToMany('App\Widget')->withPivot('position', 'settings); 
    } 
} 

Sonra db konusu satırı oluşturmak için yapmanız:

$page->widgets()->attach($widgetId, ['position' => $position, 'settings' => $settings]); 

Yapabileceğiniz pivot tabloda verilere erişmek için:

resmi belgelerde birçok bilgi var
foreach ($page->widgets as $widget) { 
    echo $widget->pivot->position; 
    echo $widget->pivot->settings; 
} 

: https://laravel.com/docs/5.2/eloquent-relationships#many-to-many