2013-11-25 4 views
0

У меня было это раньше, но я не могу заставить его работать в репозитории.laravel relationship associate Call to undefined method

У меня есть две модели - книги и билетАудит, как показано ниже.

Я пытаюсь связать ticketAudit к книгам, но я получаю сообщение об ошибке вызова неопределенного метода

Вот мои модели:

Книга Модель:

class Book extends Eloquent { 
    public function ticketAudit() { 
    return $this->hasMany('TicketAudit'); 
} 
} 

TicketAudit Модель :

class TicketAudit extends Eloquent { 
    public function book() { 
    return $this->belongsTo('Book'); 
} 
} 

В книге контроллера я следующее (книга впрыскивается):

public function store() 

{ 
    $input = Input::all(); 

    $result = $this->book->create($input); 

    if ($result) { 
    //  //if book created then create tickets 

     $this->ticket->createTicket($input, $result); 

     return Redirect::route('books.index'); 
    } 
} 

и в методе createTicket в хранилище у меня есть:

public function createTicket($input, $book) { 

    $counter = $input['start_number']; 

    while($counter <= $input['end_number']) { 

     $ticketDetails = array(
      'ticketnumber'=>$counter, 
      'status'=>'unused', 
      'active'=>1 
      ); 

     $newTicket = $this->ticket->create($ticketDetails); 

     $newTicket->associate($book); 

     $newTicket->save(); 


     $counter = $counter+1; 

    } 
    return $counter; 
} 

ассоциированный метод вызывает ошибку - I» У меня эта работа работает в других моделях, но это изменение в хранилище вызывает у меня головные боли!

Какая ошибка я сделал?

ответ

1

Вы можете сделать все это намного короче:

public function createTicket ($input, $book) { 

    $counter = $input['start_number']; 
    $end  = $input['end_number']; 

    for (; $counter <= $end; $counter++) 
    { 
     $book->ticketAudit()->save($this->ticket->newInstance(array(
      'ticketnumber' => $counter, 
      'status'  => 'unused', 
      'active'  => 1 
     ))); 
    } 
} 
+0

Великий - спасибо. Я осторожно отношусь к методам цепочки, так как не всегда ясно, какой заказ и т. Д. Спасибо за вашу помощь – Ray

Смежные вопросы