[英]Call to a member function rawFirms() on null
我有一个名为Raw的模型,其中有很多RawFirms
class Raw extends Model
{
public function rawFirms(){
return $this->hasMany(RawFirm::class);
}
}
在我的Seeder中,我有以下代码部分:
try{
$raw = $raw_children->raws()->create([
'name'=>$leaf,
'quantity'=>0
]);
// if(!$raw){
// throw new \Exception;
// }
}
catch(Illuminate\Database\QueryException $e){
$error_code = $e->errorInfo[1];
if($error_code == 1062){
$raw = Raw::where('name', $l)->first();
}
}
$position_id = $faker->numberBetween(1, 432);
//creating rawFirm for three types
if($firm_id != ''){
foreach(range(0, 2) as $type){
$raw->rawFirms()
->create([
'firm_id'=>$firm_id,
'position_id'=>$position_id,
'quantity'=>0,
'type'=>$type,
]);
}
}
当我想通过$raw->rawFirms()
创建rawFirm
,显示错误
在null上调用成员函数rawFirms()。
但是,我调试了原始对象,并返回了非空对象。 谁能帮我找到问题。
查看您的代码:
catch(Illuminate\Database\QueryException $e){
应替换为:
catch(\Illuminate\Database\QueryException $e){
(注意前导反斜杠)或更一般
catch(\Exception $e){
如果您想捕获任何类型的异常。
另外,您还使用了:
$error_code = $e->errorInfo[1];
if($error_code == 1062){
$raw = Raw::where('name', $l)->first();
}
但是,如果$ error_code不同,该怎么办? 然后,您无需将$raw
设置为任何值。
另外,如果您捕获到此异常,则可能应该这样记录:
catch(\Illuminate\Database\QueryException $e){
\Log::error($e);
$error_code = $e->errorInfo[1];
if($error_code == 1062){
$raw = Raw::where('name', $l)->first();
}
}
现在,您真的不知道如果不记录该异常,为什么会发生。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.