2017-05-16 2 views
3

Ich habe ein Problem mit den Daten der Beziehung viele zu viele, zuerst werde ich meine Modelle und Controller setzen, verwende ich Laravel 5.3Erhalten Sie Daten aus Pivot-Tabelle in Sicht Laravel

Modell Listen Adressen

class ListsAddresses extends Model 
{ 
protected $table = "addresses"; 

protected $fillable = ['state', 'city', 'street_number', 'neighborhood', 'cp']; 

public function lists() 
{ 
    return $this->belongsToMany('App\Admin\Models\Lists', 'list_has_addresses' , 'address_id', 'list_id'); 
} 

public function user(){ 
    return $this->belongsTo('App\Admin\Models\User'); 
} 

public $timestamps = false; 
} 

Controller-Listen Adressen

public function form_edit_address($id_list, $id_address){ 

     $list = Lists::find($id_list); 

     $address = ListsAddresses::find($id_address); 

     return view("admin.forms.form_edit_address") 
        ->with('list', $list) 
        ->with('address', $address); 

    } 

Blick auf Formular

<div class="col-md-6" style="padding-right: 0"> 
      <div class="form-group"> 
      <label for="order">Orden*</label> 
      <input type="order" class="form-control" id="order" name="order" value="{{ $address->order }}" required> 
      </div><!-- /.form-group --> 
     </div><!-- /.col --> 

Meine Schraubbefestigung der Datenbank hat die nächste Struktur

id - title - order - list_id - address_id 

Wie ich den Wert, um die Adresse in Pivot-Tabelle in meiner Ansicht entsprechend bekommen?

EDDIT

Dies ist die Art, wie ich in der Reihenfolge speichern, wenn ich schaffen neue Adresse

if($address->save()){ 

       $address_data = array(); 

       $address_title = htmlspecialchars($request->input("state").' '.$request->input("city").' '.$request->input("street").' '.$request->input("neighborhood").' '.$request->input("cp")); 

       $address_order = $request->input("order"); 

       $address_data[ $address->id ] = array('title' => $address_title, 'order' => $address_order); 

       $list->addresses()->attach($address_data); 
    } 

Antwort

2

Vielleicht zuerst Ihre Beziehung Funktion ändern, um eine withPivot('order')

public function lists() 
{ 
    return $this->belongsToMany('App\Admin\Models\Lists', 
     'list_has_addresses' , 'address_id', 'list_id') 
     ->withPivot('order'); 
} 

Weiter haben Sie Wenn Sie die $ -Liste und $ -Adresse vollständig getrennt abrufen, gibt es momentan keine Garantie, dass sie tatsächlich miteinander verwandt sind. Wenn Sie nicht Strecke Modell tun Bindung dann sollten Sie vielleicht einige ..OrFail() haben überprüft, mit 404 abzubrechen, wenn die Dinge nicht gefunden:

public function form_edit_address($id_list, $id_address) 
{ 

    $address = ListsAddresses::findOrFail($id_address); 
    $list = $address->lists()->where('list_id', $id_list)->firstOrFail(); 

    return view("admin.forms.form_edit_address") 
       ->with('list', $list) 
       ->with('address', $address); 
} 

Ich denke, die $ Liste Objekt wird derjenige sein, mit die Pivot-Eigenschaft, also in Ihrer Ansicht würden Sie wahrscheinlich sagen $list->pivot->order

+0

Hallo, ich versuche es bereits und nicht arbeiten, geben Fehler für Daten nicht Objekt erhalten, ich füge einige zusätzliche Code in meiner Frage, Grüße. –

+0

Diese Arbeit sehr gut, danke: D –

Verwandte Themen