我的定价模式
protected $fillable = [
'zone_id',
'is_short_time',
'is_service_feeder',
'route_id',
'value',
];
public function route()
{
return $this->belongsTo(Route::class);
}
我的路线模型
protected $fillable = [
'zone_id',
'from_city_id',
'to_city_id',
'is_in_the_city',
];
public function pricing(){
return $this->hasOne(Pricing::class);
}
这是我的控制器
public function feeder_destroy($zoneid, $pricingfeederid)
{
$pricing_feeder = Pricing::find($pricingfeederid)->where('zone_id', $zoneid)->where('is_service_feeder', 1);
$pricing_feeder->route()->delete();
$pricing_feeder->delete();
}
错误说
Call to undefined method Illuminate\Database\Query\Builder::route()
我也想删除定价记录和路线记录。
我的代码有什么问题?应该怎么样?
任何帮助表示感谢。
答案 0 :(得分:1)
您的控制器应该
$pricing_feeder = Pricing::find($pricingfeederid)->where('zone_id', $zoneid)->where('is_service_feeder', 1)->first();
最后不要忘记first()
。
然后使用$pricing_feeder->route->delete();
答案 1 :(得分:0)
尝试此操作... $pricing_feeder->route->delete();
从()
route()
您的错误发生在relation
,而不是Parent
。
答案 2 :(得分:0)
不是最高级的,但您可以通过将此方法添加到路线模型
来删除定价附带的路径public function delete()
{
// delete all related pricing
$this->pricing()->delete();
// delete the route as well
return parent::delete();
}
然后只需致电$pricing_feeder->route->delete();
答案 3 :(得分:0)
好的,我有这种模特关系
在发布模型
中public function user(){
return $this->belongsTo(User::class);
}
在用户模型
中public function post(){
return $this->hasMany(Post::class);
}
以下代码删除了所有帖子和用户
$user = \App\User::findOrFail(1);
$user->post[1]->delete();
$user->delete();
答案 4 :(得分:0)
您的代码不起作用,因为您需要添加first()
方法调用:
$pricing_feeder = Pricing::find($pricingfeederid)->where('zone_id', $zoneid)->where('is_service_feeder', 1)->first();
如果为null,我将检查返回的对象。如果不是,那么您也可以删除相关关系和模型。
此外,调用delete()
方法时,请使用以下关系:
$pricing_feeder->route->delete();