2017-01-09 2 views
0

Здравствуйте, я новичок в Laravel и теперь я перед этой ошибкой BadMethodCallException in Macroable.php line 74: Method save does not exist.BadMethodCallException в строке Macroable.php 74: Сохранение метода не существует. Laravel 5,2

Если я var_dump(); die(); все выходные, то я получаю все из них, но когда я использую метод сохранения для сохранения результатов в базу данных это дает мне эту ошибку save method does not exist. Я не знаю, где в моем коде я делаю это неправильно.

Обратитесь к контроллеру маршрута и просмотрите его для правильного понимания. Заранее спасибо.

Контроллер

public function td($id) { 

    $tn = $this->t->getAllTn(); 
    $to = $this->t->getAllTo(); 

    $time = Carbon\Carbon::now(); // current time 
    $time->toDateTimeString(); // converting time to string 

    if((isset($_POST["n"]) && !empty($_POST["n"]))) { 
     $tn->t_type_id = Input::get('options'); 
     $tn->d_id = $id; 
     $tn->result = Input::get('message'); 
     $tn->date = $time; 

     // var_dump($tn->date); 
     // var_dump($tn->t_type_id); 
     // var_dump($tn->d_id); 
     // var_dump($tn->result); 
     // die(); 

     Session::flash('message', 'Your tn has been added.'); 
     $tn->save(); 

    } else if((isset($_POST["o"]) && !empty($_POST["o"]))) { 

     $to->d_id = $id; 
     $to->outcome = Input::get('message'); 
     $to->date = $time->toDateTimeString(); 

     // var_dump($to->d_id); 
     // var_dump($to->outcome); 
     // var_dump($to->date = $time->toDateTimeString()); 
     // die(); 

     Session::flash('message', 'Your to has been added.'); 
     $to->save(); 
    } 
    return redirect('/t'); 
} 

Маршрут

Route::get('/t/{id}', '[email protected]'); 
Route::post('/t/{id}', '[email protected]'); 

Просмотр

<div class="form-group"> 
<form action="/t/{{ $d['id'] }}" method="post"> 

        {{ csrf_field() }} 

<div class="panel-body"><h4>Heading here</h4></div> 
     <select class="form-control" id="options" name="options" style="width:100%" type="checkbox"> 

      @foreach($t as $t) 
       <option value="{{ $t->id }}">{{ $t->type }}</option> 
      @endforeach 

     </select> 
    </div> 

<div class="col-md-4" id="value" align="center"> 
      <div class="panel panel-warning"> 
       <div class="panel-heading"> 
       Enter text below 
       </div> 

         <div class="form-group has-success"> 
          <textarea class="form-control" id="message" name="message" placeholder="Please enter your message here..." rows="5"></textarea> 
          <input type="submit" class="btn btn-primary" name="n" value="A-N"> 
          <input type="submit" class="btn btn-primary" name="o" value="A-O"> 
         </div> 
       </form> 
      <!--   Notes: <br/>--> 

     </div> 

<script  src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> 

<script> 

function hide() { 
$("#value").hide(); 
$("#h").hide(); 
$("#search").hide(); 
} 

function show() { 
$("#value").show(); 
$("#h").show(); 
$("#search").show(); 
} 

function initHandlers() { 
$("#options").on('click', function() { 
    show(); 
}); 
} 

hide(); 
initHandlers(); 

</script> 

Интерфейс Реализация

public function getAllTn() { 
    return TN::all(); 
} 

public function getAllTO(){ 
    return TO::all(); 
} 
+0

Вы пытаетесь сохранить коллекцию? '$ to' является результатом' TO :: all() ', который должен возвращать' Collection'. –

+0

это просто текстовое поле вместе с идентификатором и датой времени 'eg 'Это сообщение« добавлено в идентификатор пользователя »5'' ... Я не знаю, почему я его получаю ... –

+0

Я просто пытаюсь хранить 'id' и' result (message) 'под их столбцами в базе данных. –

ответ

1

Ваш способ создания Model s неверен. Попробуйте что-нибудь вроде:

$to = new TO(); 

$to->d_id = $id; 
$to->outcome = Input::get('message'); 
$to->date = $time->toDateTimeString(); 

$to->save(); 
+0

это будет работать точно, но если вы видите в представлении, есть две кнопки «ТА» и «ТО», поэтому на самом деле я пытаюсь сделать это, когда пользователь нажимает на 'TA' данные сохраняются в таблице' TA', и когда пользователь нажимает 'TO', данные сохраняются в таблице' TO'. Для этого я имею используется 'if ((isset ($ _ POST [" n "]) &&! empty ($ _ POST [" n "])))' ... Вы поняли мое мнение? –

+0

o да, это сделано ... большое вам спасибо за помощь ... вы были правы, на самом деле я создавал «неправильную модель» ... Я называю «новый TO» в «isset», и он работает ... Я забыл эту часть ... Большое вам спасибо за помощь ... :) –

+0

Как я могу выбрать это как приемлемый ответ? –

0

Вам не нужно брать все предметы, чтобы обновлять все предметы с одинаковыми данными?

Если поля модели заполняются, вы можете просто назначить их массе.

$data = [ 
    't_type_id' => request()->input('options'), 
    'd_id'  => $id, 
    'result' => request()->input('message'), 
    'date'  => $time->toDateTimeString() 
]; 

TN::update($data); // this will update all TN entries 

Не уверен, что вам просто нужно обновить 1 или много предметов в таблице TN?

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