"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
}
希望它能为您工作...
我想获取 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->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
}
希望它能为您工作...