BadMethodCallException:调用未定义的方法Illuminate\Database\Query\Builder :: detach() [英] BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::detach()
问题描述
我是Laravel的新人。
这是我想要做的。
当建立记录被删除时,相关的房间记录也被删除。除此之外,当相关的房间记录在建筑物记录被删除时被删除时,我想将null设置为相关visit_records记录上的外部空间ID。
当我尝试分离房间模型记录和visitRecord模型记录之间的关系时,会导致错误。
我该如何使其工作?
Building => Room => VisitingRecord
建筑有很多房间。房间属于建筑物。房间有很多
访问记录。访问记录属于一个房间。
建筑模型类
命名空间App \Model;
/ pre>
使用Illuminate\Database\Eloquent\Model;
使用Illuminate\Database\Eloquent\SoftDeletes;
class建筑物扩展模型
{
使用SoftDeletes;
protected $ dates = ['deleted_at'];
public $ table =buildings;
公共功能室()
{
返回$ this-> hasMany(App \Model\Room );
}
public static function boot(){
parent :: boot();
static :: deleted(function($ building)
{
//这4行导致错误
$ building - > rooms() - > each(function($ room){
$ room-> visitRecords() - > detach();
$ room-> save();
});
//这行确定
$ building-> rooms() - > delete();
});
}
}
日志
[2017-05-15 13: 36:02] local.ERROR:BadMethodCallException:调用未定义的方法Illuminate\Database\Query\Builder :: detach()in / vagrant / door / vendor / laravel / framework / src / Illuminate / Database / Query / Builder .php:2451
堆栈跟踪:
#0 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1250):Illuminate\Database\Query \Builder-> __ call('detach',Array)
#1 [internal function]:Illuminate\Database\Eloquent\Builder-> __ call('detach',Array)
#2 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php(340):call_user_func_array(Array,Array)
#3 / vagrant / door / app / Model /Building.php(62):Illuminate\Database\Eloquent\Relations\Relation-> __ call('detach',Array)
#4 / vagrant / door / vendor / laravel /framework/src/Illuminate/Database/Concerns/BuildsQueries.php(56):App \Model\Building :: App \Model\ {closure}(Object(App \Model\Room),0)
#5 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php(35):Illuminate\Database\Eloquent\Builder-> Illuminate\Database\\ \\ Concerns\ {closure}(Object(Illuminate\Database\Eloquent\Collection))
#6 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php (60):Illuminate\Database\Eloquent\Builder-> chunk(1000,Object(Closure))
#7 [internal function]:Illuminate\Database\Eloquent\Builder->每个(Object(Closure))
#8 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php(340):call_user_func_array(Array,Array)$ b $ (#) t; __ call('each',Array)
#10 /vagrant/door/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(348):App \Model\Building :: App \Model\ {closure}(Object(App \Model\Building))
#11 /vagrant/door/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(199): Illuminate\Events\Dispatcher-> Illuminate\Events\ {closure}('eloquent.delete ...',Array)
#12 / vagrant / door / vendor / laravel / framework / src /照亮/事件/ Dispatcher.php(172):Illuminate\Events\Dispatcher-> dispatch('eloquent.delete ...',Array,false)
#13 / vagrant / door / vendor / laravel /framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(148):Illuminate\Events\Dispatcher-> fire('eloquent.delete ...',Object(App \Model\Building ))
#14 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(754):Illuminate\Database\Eloquent\Model-> fireModelEvent('削除ted',false)
#15 /vagrant/door/app/Http/Controllers/BuildingController.php(274):Illuminate\Database\Eloquent\Model-> delete()
# 16 [内部功能]:App \Http\Controlers\BuildingController-> destroy('2',Object(App \Http\Requests\BuildingRequest))
#17 / vagrant / door / vendor / laravel / framework / src / Illuminate / Routing / Controller.php(55):call_user_func_array(Array,Array)
#18 / vagrant / door / vendor / laravel / framework / src / Illuminate / Routing / ControllerDispatcher。 php(44):Illuminate\Routing\Controller-> callAction('destroy',Array)
#19 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Route.php 203):Illuminate\Routing\ControllerDispatcher-> dispatch(Object(Illuminate\Routing\Route),Object(App\Http\Controllers\BuildingController),'destroy')
#20 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160):Illuminate\Routi ng\Route-> runController()
#21 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Router.php(559):Illuminate\Routing\Route-> run()
#22 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30):Illuminate\Routing\Router-> Illuminate\Routing\ {关闭}(Object(Illuminate\Http\Request))
#23 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41):Illuminate\Routing \Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#24 / vagrant / door / vendor / laravel / framework / src / Illuminate / Pipeline / Pipeline.php(148):Illuminate\Routing\Middleware\SubstituteBindings-> handle(Object(Illuminate\Http\Request),Object(Closure))
#25 / vagrant / door / vendor /1 / 3 / {closure}(Object(Illuminate\Http\Request))
#26 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(65):Illuminate \Routing\Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#27 / vagrant / door / vendor / laravel / framework / src / Illuminate /Pipeline/Pipeline.php(148):Illuminate\Foundation\Http\Middleware\VerifyCsrfToken-> handle(Object(Illuminate\Http\Request),Object(Closure))
#28 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\ {closure}(Object(Illuminate\Http \Request))
#29 /vagrant/door/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49):Illuminate\Routing\Pipeline-> Illuminate\路线\ {闭合}(对象(照明\Http\Request))
#30 / vagrant / door /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148):Illuminate\View\Middleware\ShareErrorsFromSession-> handle(Object(Illuminate\Http\Request),Object(Closure) )
#31 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\ {closure} (Object(Illuminate\Http\Request))
#32 /vagrant/door/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64):Illuminate\Routing\管道 - > Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#33 / vagrant / door / vendor / laravel / framework / src / Illuminate / Pileline / Pipeline。 php(148):Illuminate\Session\Middleware\StartSession-> handle(Object(Illuminate\Http\Request),Object(Closure))
#34 / vagrant / door / vendor / laravel /framework/src/Illuminate/Routing/Pipeline.php(53):Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\ {closure}(Object(Illuminate\Http\Request))
#35 /vagrant/door/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php 37):照明\出线\Pipeline->照亮\Routing\ {闭合}(对象(照明\Http\Request))
#36 / vagrant / door / vendor / laravel / framework /src/Illuminate/Pipeline/Pipeline.php(148):Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse-> handle(Object(Illuminate\Http\Request),Object(Closure))
# 37 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\ {closure}(Object(Illuminate\ Http\Request))
#38 /vagrant/door/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59):Illuminate\Routing\Pipeline-> Illuminate\\ \\Routing\ {闭合}(对象(Illuminate\Http\Request))
#39 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148):Illuminate\Cookie\Middleware\EncryptCookies-> handle(Object(Illuminate\ Http\Request),Object(Closure))
#40 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):Illuminate\Pipeline\Pipeline-> ;照明\Pipeline\ {closure}(Object(Illuminate\Http\Request))
#41 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102 ):Illuminate\Routing\Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#42 / vagrant / door / vendor / laravel / framework / src / Illuminate / Routing / Router.php(561):Illuminate\Pipeline\Pipeline-> then(Object(Closure))
#43 / vagrant / door / vendor / laravel / framework / src / Illuminate /Routing/Router.php(520):Illuminate\Routing\Router-> runRouteWithinStack(Object(Illuminate\Routing\Route),Obj ect(Illuminate\Http\Request))
#44 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Router.php(498):Illuminate\Routing\Router-> ; dispatchToRoute(Object(Illuminate\Http\Request))
#45 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(174):Illuminate\Routing \Router-> dispatch(Object(Illuminate\Http\Request))
#46 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30):Illuminate \Foundation\Http\Kernel-> Illuminate\Foundation\Http\ {closure}(Object(Illuminate\Http\Request))
#47 / vagrant / door / vendor / barryvdh /laravel-debugbar/src/Middleware/Debugbar.php(51):Illuminate\Routing\Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#48 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148):Barryvdh\Debugbar\Middleware\ Debugbar-> handle(Object(Illuminate\Http\Request),Object(Closure))
#49 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53 ):Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\ {closure}(Object(Illuminate\Http\Request))
#50 / vagrant / door / vendor / laravel / framework / src / Illuminate / Foundation / Http / Middleware / TransformsRequest.php(30):Illuminate\Routing\Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#51 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148):Illuminate\Foundation\Http\Middleware\TransformsRequest-> handle(Object(Illuminate\\ \\ Http\Request),Object(Closure))
#52 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53):Illuminate\Pipeline\Pipeline- > Illuminate\Pipeline\ {closure}(Object(Illuminate\Http\Request))
#53 / v agrant / door / vendor / laravel / framework / src / Illuminate / Foundation / Http / Middleware / TransformsRequest.php(30):Illuminate\Routing\Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate \Http\Request))
#54 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148):Illuminate\Foundation\Http\Middleware\ TransformsRequest-> handle(Object(Illuminate\Http\Request),Object(Closure))
#55 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53 ):Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\ {closure}(Object(Illuminate\Http\Request))
#56 / vagrant / door / vendor / laravel / framework / src / Illuminate / Foundation / Http / Middleware / ValidatePostSize.php(27):Illuminate\Routing\Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#57 / vagrant / door / vendor / laravel / framework / src / Illuminate / Pipeline / Pipel ine.php(148):Illuminate\Foundation\Http\Middleware\ValidatePostSize-> handle(Object(Illuminate\Http\Request),Object(Closure))
#58 / vagrant /门/供应商/ laravel / framework / src /照明/路由/ Pipeline.php(53):Illuminate\Pipeline\Pipeline-> Illuminate\Pipeline\ {closure}(Object(Illuminate\Http\Request ))
#59 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46):Illuminate\Routing\Pipeline-> Illuminate\Routing \ {closure}(Object(Illuminate\Http\Request))
#60 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148):Illuminate\基础\Http\Middleware\CheckForMaintenanceMode-> handle(Object(Illuminate\Http\Request),Object(Closure))
#61 / vagrant / door / vendor / laravel / framework / src /照明/路由/ Pipeline.php(53):Illuminate \Pipeline\Pipeline-> Il lumate\Pipeline\ {closure}(Object(Illuminate\Http\Request))
#62 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102) :照亮\ Routing\Pipeline-> Illuminate\Routing\ {closure}(Object(Illuminate\Http\Request))
#63 / vagrant / door / vendor / laravel / framework / src /Iluminate/Foundation/Http/Kernel.php(149):Illuminate\Pipeline\Pipeline-> then(Object(Closure))
#64 / vagrant / door / vendor / laravel / framework / src / Illuminate / Foundation / Http / Kernel.php(116):Illuminate\Foundation\Http\Kernel-> sendRequestThroughRouter(Object(Illuminate\Http\Request))
#65 / vagrant / door / public / index.php(53):Illuminate\Foundation\Http\Kernel-> handle(Object(Illuminate\Http\Request))
解决方案分离在多对多关系中使用。
更改- > detach()
到- > update(['room_id'= null])
并确保 room_id 列是可空I'm new to Laravel.
This is what I'm trying to do.
When building record is deleted, the related room record is deleted as well. In addition to that, when the related room record is deleted on building record being deleted, I want to set null to the foreign key to room id on the related visit_records record.
When I try to detach the relationship between room model record and visitingRecord model record, it causes an error.
How can I make it work??
Building => Room => VisitingRecord
Building has many rooms. Room belongs to a building. Room has many visit records. Visit Record belongs to a room.
Building Model Class
namespace App\Model; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; class Building extends Model { use SoftDeletes; protected $dates = ['deleted_at']; public $table = "buildings"; public function rooms() { return $this->hasMany("App\Model\Room"); } public static function boot(){ parent::boot(); static::deleted(function($building) { //This 4 lines cause an error. $building->rooms()->each(function($room) { $room->visitRecords()->detach(); $room->save(); }); //this line is ok. $building->rooms()->delete(); }); } }
log
[2017-05-15 13:36:02] local.ERROR: BadMethodCallException: Call to undefined method Illuminate\Database\Query\Builder::detach() in /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Query/Builder.php:2451 Stack trace: #0 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Builder.php(1250): Illuminate\Database\Query\Builder->__call('detach', Array) #1 [internal function]: Illuminate\Database\Eloquent\Builder->__call('detach', Array) #2 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php(340): call_user_func_array(Array, Array) #3 /vagrant/door/app/Model/Building.php(62): Illuminate\Database\Eloquent\Relations\Relation->__call('detach', Array) #4 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php(56): App\Model\Building::App\Model\{closure}(Object(App\Model\Room), 0) #5 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php(35): Illuminate\Database\Eloquent\Builder->Illuminate\Database\Concerns\{closure}(Object(Illuminate\Database\Eloquent\Collection)) #6 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Concerns/BuildsQueries.php(60): Illuminate\Database\Eloquent\Builder->chunk(1000, Object(Closure)) #7 [internal function]: Illuminate\Database\Eloquent\Builder->each(Object(Closure)) #8 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Relations/Relation.php(340): call_user_func_array(Array, Array) #9 /vagrant/door/app/Model/Building.php(64): Illuminate\Database\Eloquent\Relations\Relation->__call('each', Array) #10 /vagrant/door/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(348): App\Model\Building::App\Model\{closure}(Object(App\Model\Building)) #11 /vagrant/door/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(199): Illuminate\Events\Dispatcher->Illuminate\Events\{closure}('eloquent.delete...', Array) #12 /vagrant/door/vendor/laravel/framework/src/Illuminate/Events/Dispatcher.php(172): Illuminate\Events\Dispatcher->dispatch('eloquent.delete...', Array, false) #13 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasEvents.php(148): Illuminate\Events\Dispatcher->fire('eloquent.delete...', Object(App\Model\Building)) #14 /vagrant/door/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Model.php(754): Illuminate\Database\Eloquent\Model->fireModelEvent('deleted', false) #15 /vagrant/door/app/Http/Controllers/BuildingController.php(274): Illuminate\Database\Eloquent\Model->delete() #16 [internal function]: App\Http\Controllers\BuildingController->destroy('2', Object(App\Http\Requests\BuildingRequest)) #17 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Controller.php(55): call_user_func_array(Array, Array) #18 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php(44): Illuminate\Routing\Controller->callAction('destroy', Array) #19 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Route.php(203): Illuminate\Routing\ControllerDispatcher->dispatch(Object(Illuminate\Routing\Route), Object(App\Http\Controllers\BuildingController), 'destroy') #20 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Route.php(160): Illuminate\Routing\Route->runController() #21 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Router.php(559): Illuminate\Routing\Route->run() #22 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Routing\Router->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #23 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php(41): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #24 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Routing\Middleware\SubstituteBindings->handle(Object(Illuminate\Http\Request), Object(Closure)) #25 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #26 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php(65): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #27 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\VerifyCsrfToken->handle(Object(Illuminate\Http\Request), Object(Closure)) #28 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #29 /vagrant/door/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php(49): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #30 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\View\Middleware\ShareErrorsFromSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #31 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #32 /vagrant/door/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php(64): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #33 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Session\Middleware\StartSession->handle(Object(Illuminate\Http\Request), Object(Closure)) #34 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #35 /vagrant/door/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php(37): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #36 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse->handle(Object(Illuminate\Http\Request), Object(Closure)) #37 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #38 /vagrant/door/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php(59): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #39 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Cookie\Middleware\EncryptCookies->handle(Object(Illuminate\Http\Request), Object(Closure)) #40 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #41 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #42 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Router.php(561): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #43 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Router.php(520): Illuminate\Routing\Router->runRouteWithinStack(Object(Illuminate\Routing\Route), Object(Illuminate\Http\Request)) #44 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Router.php(498): Illuminate\Routing\Router->dispatchToRoute(Object(Illuminate\Http\Request)) #45 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(174): Illuminate\Routing\Router->dispatch(Object(Illuminate\Http\Request)) #46 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(30): Illuminate\Foundation\Http\Kernel->Illuminate\Foundation\Http\{closure}(Object(Illuminate\Http\Request)) #47 /vagrant/door/vendor/barryvdh/laravel-debugbar/src/Middleware/Debugbar.php(51): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #48 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Barryvdh\Debugbar\Middleware\Debugbar->handle(Object(Illuminate\Http\Request), Object(Closure)) #49 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #50 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #51 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #52 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #53 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php(30): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #54 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\TransformsRequest->handle(Object(Illuminate\Http\Request), Object(Closure)) #55 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #56 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php(27): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #57 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\ValidatePostSize->handle(Object(Illuminate\Http\Request), Object(Closure)) #58 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #59 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/CheckForMaintenanceMode.php(46): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #60 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(148): Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode->handle(Object(Illuminate\Http\Request), Object(Closure)) #61 /vagrant/door/vendor/laravel/framework/src/Illuminate/Routing/Pipeline.php(53): Illuminate\Pipeline\Pipeline->Illuminate\Pipeline\{closure}(Object(Illuminate\Http\Request)) #62 /vagrant/door/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(102): Illuminate\Routing\Pipeline->Illuminate\Routing\{closure}(Object(Illuminate\Http\Request)) #63 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(149): Illuminate\Pipeline\Pipeline->then(Object(Closure)) #64 /vagrant/door/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(116): Illuminate\Foundation\Http\Kernel->sendRequestThroughRouter(Object(Illuminate\Http\Request)) #65 /vagrant/door/public/index.php(53): Illuminate\Foundation\Http\Kernel->handle(Object(Illuminate\Http\Request))
解决方案Detach used in many-to-many relation. Change
->detach()
to->update(['room_id' = null])
and make sure the room_id column is nullable这篇关于BadMethodCallException:调用未定义的方法Illuminate\Database\Query\Builder :: detach()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!