2017-02-22 1 views
0

Ich arbeite in Laravel5.4. Ich habe 3 Tabellen erstellt.Einfügen von Daten in Pivot-Tabelle in Laravel5.4

Benutzertabelle:

enter image description here

Tickets Tabelle:

enter image description here

ticket_cc_users Tabelle:

enter image description here

Jetzt, Ich habe Beziehung zwischen Benutzern und Kartenmodul wie unten geschaffen.

User-Modell:

public function tickets() 
{ 
    return $this->belongsToMany('App\User', 'ticket_cc_users', 'user_id', 'ticket_id'); 
} 

Ticket Modell:

public function users() 
{ 
    return $this->belongsToMany('App\Models\Tickets\Ticket', 'ticket_cc_users', 'ticket_id', 'user_id'); 
} 

TicketController Controller speichern Methode:

public function store(Request $request) 
{ 
    return $request->all(); 
    $ticket = new Ticket; 
    $ticket->requester_id = $this->user['id']; 
    //$ticket->assignee_id = $request->assignee_id; 
    //$ticket->cc_id = $request->cc_id; 
    $ticket->type = $request->type; 
    $ticket->priority = $request->priority; 
    $ticket->subject = $request->subject; 
    $ticket->description = $request->description; 
    $ticket->status = $request->status; 
    if($request->link) 
    { 
     $ticket->link = $request->link; 
     $ticket->due_date = null; 
    } 
    if($request->due_date && $request->due_date !="") 
    { 
     $ticket->due_date = date('Y-m-d',strtotime($request->due_date)); 
     $ticket->link = ""; 
    } 
    if($ticket->save()) 
    { 
     $ticket->users()->sync($request->cc_id); 

     foreach($request->ticket_tags as $value){ 
      $tag = new Tag; 
      $tag->tag_name = $value['text']; 
      $tag->save(); 
      $ticketTag = new TicketTag; 
      $ticketTag->tickets_id = $ticket->id; 
      $ticketTag->tags_id = $tag->id; 
      $ticketTag->save(); 
     } 

     $data = Ticket::find($ticket->id); 
     Mail::to('[email protected]')->send(new CreateTicket($data)); 

     $response = array(
      'success' => true 
     ); 
    } 
    return $response; 
} 

Hier werde ich Daten in Ticket-Tabelle speichern. Also muss ich cc Benutzerdaten in der ticket_cc_user Tabelle speichern. Wie kann ich ticket_id und user_id in dieser Tabelle speichern? Hier kann ich mehrere user_id bekommen. Und ich verwende Eloquente ORM. Hier

, Es gibt einen Fehler wie SQLSTATE [42S22]: Column nicht gefunden: 1054 Unknown column '$$ HashKey' in 'field list' (SQL: insert into ticket_cc_users ($$hashKey, address, city_id, country_id, created_at , deleted_at, email, firstname, id, introducer_id, is_verified, lastname, phone, signature, state_id, ticket_id, updated_at, user_id, username, userrole_id) Werte (object: 109,,,, 2017.02.10 05.26.01 ,, nisarg.b @ infirays.com,, 26, 1,,, 9999999999,,, 1, 2017-02-14 08:33:18, 0, nisarg, 2))

Also, welchen Code sollte ich ändern müssen Funktion speichern, um Daten in ticket_cc_users Tabelle zu speichern?

Antwort

0

Es scheint, dass belongsToMany() Parameter Reihenfolge geändert werden sollte. Der erste und der letzte (4.) Parameter sollten "ungefähr" dieselbe Instanz sein.

UPDATE Auch der Körper von tickets() und users() Funktionen ausgetauscht

dies also versuchen sollte:

User-Modell:

public function tickets() 
{ 
    return $this->belongsToMany('App\Models\Tickets\Ticket', 'ticket_cc_users', 'user_id', 'ticket_id'); 
} 

Ticket Modell:

public function users() 
{ 
return $this->belongsToMany('App\User', 'ticket_cc_users', 'ticket_id', 'user_id');   
} 

Von Laravel Many To Many Docs:

Das dritte Argument ist der Fremdschlüssel Namen des Modells, auf dem Sie die Beziehung definieren, während das vierte Argument der Fremdschlüssel Name des Modells ist, dass Sie verbinden sind zu:

return $ this-> belongsToMany ('App \ Role', 'role_user', 'user_id', 'role_id');