"Trying to get property 'id' of non-object"

"Trying to get property 'id' of non-object"

我想获取 cycles table 的 ID,以便我可以存储到 mortalities table.

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();

request('date_input') was from the 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()
    ]);

}

之后我得到一个错误:

"message": "SQLSTATE[22007]: Invalid datetime format: 1366 Incorrect integer value: '[]' for column 'cycle_id' at row 1 (SQL: insert into mortalities (date_input, number_of_mortality, chicken_age, cause_of_death, cycle_id, user_id, updated_at, created_at) values (2018-09-04, 25, 2, , [], 1, 2018-11-28 07:38:01, 2018-11-28 07:38:01))"


我修复了错误,但出现了新错误

"message": "Trying to get property 'id' of non-object"

谁能帮帮我?

use like that (u are passing collection to insert)

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

检查这个!!

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()
    ]);`

您需要使用 $request->get('your_id')

从 $request 对象中获取值

$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
}

希望它能为您工作...