2014-11-15 65 views
-1

我在數據庫中有兩個表,一個叫做票,一個叫狀態(某個票的狀態像新的或已完成的)...每當用戶添加票時,我希望狀態表是更新了票證ID和狀態消息。Laravel Mysql表加入

是唯一的方法來做到這一點與MYSQL表連接?

public function userSubmitTicket() { 
     $validator = Validator::make(Input::all(), ['subject' => 'required', 'message' => 'required']); 

     //if one or more of the text boxes dont contain data, the validator fails and user is returned backa to redo the form 
     if ($validator->fails()) { 

      return Redirect::back()->withInput()->withErrors($validator->messages()); 
     } 

     $user = Auth::user(); 
     $userId = $user->id; 

     $subject = Input::get('subject'); 
     $message = Input::get('message'); 
     $date = new DateTime(); 

     $ticket = Ticket::insert(array('id' => null, 'date_in' => $date, 
      'originator_id' => $userId, 'assigned_to_id' => 0, 'date_out' => null, 
      'priority' => 3, 'subject' => $subject)); 

     $ticketID = Ticket::select('id')->limit(1)->get(); 

     foreach($ticketID as $id){ 

      $status = Status::insert(array('id' => $id, 'description' => 'New')); 
     } 

這是我嘗試過的一種方式,但我知道現在不行。

+0

除了這個代碼可以使用關係進行優化的事實之外,我認爲錯誤是''id''而不是'Status :: insert'語句中的'ticket_id' – lukasgeiter

+0

我不知道這是怎麼回事,因爲$ id真的是我從售票臺獲得的$ ticketId? – Kipperman

+0

不是'$ id',而是''id''。列名稱,數組的關鍵字。 – lukasgeiter

回答

1

您可以嘗試這樣的事:

class Ticket extends Eloquent { 

    //... 
    protected $guarded = array(); // Check mass-assignment 

    public function status() 
    { 
     return $this->hasOne('Status', 'ticket_id'); 
    } 
} 

class Status extends Eloquent { 

    //... 
    protected $guarded = array(); // Check mass-assignment 
} 

在這種情況下status表必須包含ticket_id字段作爲外鍵建立的關係。所以,如果一切正常的話,你可以使用這樣的事情:

// Create a new Ticket 
$ticket = Ticket::create(array(...)); 

// Create a new Status 
$status = Status::create(array('description' => 'New')); 

// Save the relationship 
$ticket->status()->save($status); 

在這種情況下,我認爲,無論是你的表/模型有primary key設置爲id領域。