«Попытка получить свойство« id »необъекта» - PullRequest
0 голосов
/ 28 ноября 2018

Я хочу получить идентификатор таблицы cycles, чтобы можно было сохранить ее в таблице mortalities.

SELECT `id` FROM `cycles` 
WHERE `date_start_raise` <= request('date_input') 
AND `date_end_raise` >= request('date_input')`

Преобразовано в построитель запросов Laravel:

<?php

$cycle = DB::table('cycles')->select('id')
    ->where('date_start_raise', '<=', request('date_input'))
    ->where('date_end_raise', '>=', request('date_input'))
    ->get();

запрос ('date_input') был от MortalityController

MortalityController.php

    public function store(Request $request)
{



    $this->validate($request, array(
    'date_input' => 'required|date',
    'number_of_mortality' => 'required|numeric',
    'chicken_age' => 'required|numeric'
    ) );

    $cycle = DB::table('cycles')->select('id')
     ->where('date_start_raise', '<=', request('date_input'))
      ->where('date_end_raise', '>=', request('date_input')) ->get(); 

    return Mortality::create([
        'date_input' => request('date_input'),
        'number_of_mortality' => request('number_of_mortality'),
        'chicken_age' => request('chicken_age'),
        'cause_of_death' => request('cause_of_death'),
        'cycle_id'  => $cycle->first()->id,
        'user_id'  => Auth::id()
    ]);

}

После этого яполучено сообщение об ошибке:

«сообщение»: «SQLSTATE [22007]: недопустимый формат даты и времени: 1366 Неверное целочисленное значение:« [] »для столбца« cycle_id »в строке 1 (SQL: вставить в mortalities (date_input, number_of_mortality, chicken_age, cause_of_death, cycle_id, user_id, updated_at, created_at) (2018-09-04, 25, 2,, [], 1, 2018-11-28 07:38:01, 2018-11-28 07:38:01)) "


Я исправил ошибку, но появилась новая ошибка

"message": "Попытка получить свойство 'id' необъекта"

Может кто-нибудь помочь мне?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Проверьте это !!

return Mortality::create([
        'date_input' => request('date_input'),
        'number_of_mortality' => request('number_of_mortality'),
        'chicken_age' => request('chicken_age'),
        'cause_of_death' => request('cause_of_death'),
        'cycle_id'  => $cycle->first()->id,
        'user_id'  => Auth::id()
    ]);`
0 голосов
/ 28 ноября 2018

Вам необходимо получить значения из объекта $ request с помощью $request->get('your_id') или

$request->input('your_id')

Попробуйте это .. !!

$cycle = DB::table('cycles')->select('id')
            ->where('date_start_raise','<=',$request->get('date_input'))
            ->where('date_end_raise','>=',$request->get('date_input'))
            ->first();

ИЛИ

$cycle = DB::table('cycles')->select('id')
                ->where('date_start_raise','<=',$request->get('date_input'))
                ->where('date_end_raise','>=',$request->get('date_input'))
                ->get();

затем

foreach($cycle as $value){
  //extract data from $value
}

Хоп его работа для вас ...

0 голосов
/ 28 ноября 2018

используйте так (вы передаете коллекцию для вставки)

$cycle = DB::table('cycles')->select('id')
        ->where('date_start_raise','<=',request('date_input'))
        ->where('date_end_raise','>=',request('date_input'))
        ->first()->id;
...