Express - Errors when removing associated entries programatically

I’m working programatically with Express objects and following the documentation outlined here: Creating, Reading, Searching, Updating and Deleting Express Entries :: Concrete CMS

I’m currently running Concrete v9.1.2, is the documentation I’m following still relevant?

In the documentation it states to remove an existing association entry you simply run:

$student->associateEntries()->setTeacher(null); // Now Andrew has no teacher.

Yet when running the equivalent I encounter an error.

TypeError thrown with message "Concrete\Core\Express\Association\Applier::associateManyToOne(): Argument #3 ($associatedEntry) must be of type Concrete\Core\Entity\Express\Entry, null given, called in /concrete/src/Express/Association/Applier.php on line 40"

Stacktrace:
#28 TypeError in /concrete/src/Express/Association/Applier.php:53
#27 Concrete\Core\Express\Association\Applier:associateManyToOne in /concrete/src/Express/Association/Applier.php:40
#26 Concrete\Core\Express\Association\Applier:associate in /concrete/src/Express/EntryBuilder/AssociationUpdater.php:55
#25 Concrete\Core\Express\EntryBuilder\AssociationUpdater:associate in /concrete/src/Express/EntryBuilder/AssociationUpdater.php:25
#24 Concrete\Core\Express\EntryBuilder\AssociationUpdater:__call in /packages/landmark_place/src/Ajax/ParkingSpace.php:108
#23 LandmarkPlace\Ajax\ParkingSpace:deleteProperty in /concrete/src/Routing/ApplicationRouteAction.php:60
#22 call_user_func_array in /concrete/src/Routing/ApplicationRouteAction.php:60
#21 Concrete\Core\Routing\ApplicationRouteAction:execute in /concrete/src/Http/RouteDispatcher.php:37
#20 Concrete\Core\Http\RouteDispatcher:dispatch in /concrete/src/Http/Middleware/DispatcherDelegate.php:39
#19 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /concrete/src/Http/Middleware/MiddlewareStack.php:86
#18 Concrete\Core\Http\Middleware\MiddlewareStack:process in /concrete/src/Http/DefaultDispatcher.php:127
#17 Concrete\Core\Http\DefaultDispatcher:handleDispatch in /concrete/src/Http/DefaultDispatcher.php:60
#16 Concrete\Core\Http\DefaultDispatcher:dispatch in /concrete/src/Http/Middleware/DispatcherDelegate.php:39
#15 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /concrete/src/Http/Middleware/FrameOptionsMiddleware.php:39
#14 Concrete\Core\Http\Middleware\FrameOptionsMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#13 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/StrictTransportSecurityMiddleware.php:36
#12 Concrete\Core\Http\Middleware\StrictTransportSecurityMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#11 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/ContentSecurityPolicyMiddleware.php:36
#10 Concrete\Core\Http\Middleware\ContentSecurityPolicyMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#9 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/CookieMiddleware.php:35
#8 Concrete\Core\Http\Middleware\CookieMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#7 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/ApplicationMiddleware.php:29
#6 Concrete\Core\Http\Middleware\ApplicationMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#5 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/MiddlewareStack.php:86
#4 Concrete\Core\Http\Middleware\MiddlewareStack:process in /concrete/src/Http/DefaultServer.php:85
#3 Concrete\Core\Http\DefaultServer:handleRequest in /concrete/src/Foundation/Runtime/Run/DefaultRunner.php:125
#2 Concrete\Core\Foundation\Runtime\Run\DefaultRunner:run in /concrete/src/Foundation/Runtime/DefaultRuntime.php:102
#1 Concrete\Core\Foundation\Runtime\DefaultRuntime:run in /concrete/dispatcher.php:45
#0 require in /index.php:2

I’ve tried tracing it back, and even changed my code to:

$entry->associateEntries()->removeAssociation($entry->getAssociation('assoc_handle'), $linkedEntry);

Which gives me a completely different error this time:

Error thrown with message "Call to a member function getID() on int"

Stacktrace:
#25 Error in /concrete/src/Express/EntryBuilder/AssociationUpdater.php:35
#24 Concrete\Core\Express\EntryBuilder\AssociationUpdater:__call in /packages/landmark_place/src/Ajax/ParkingSpace.php:108
#23 LandmarkPlace\Ajax\ParkingSpace:deleteProperty in /concrete/src/Routing/ApplicationRouteAction.php:60
#22 call_user_func_array in /concrete/src/Routing/ApplicationRouteAction.php:60
#21 Concrete\Core\Routing\ApplicationRouteAction:execute in /concrete/src/Http/RouteDispatcher.php:37
#20 Concrete\Core\Http\RouteDispatcher:dispatch in /concrete/src/Http/Middleware/DispatcherDelegate.php:39
#19 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /concrete/src/Http/Middleware/MiddlewareStack.php:86
#18 Concrete\Core\Http\Middleware\MiddlewareStack:process in /concrete/src/Http/DefaultDispatcher.php:127
#17 Concrete\Core\Http\DefaultDispatcher:handleDispatch in /concrete/src/Http/DefaultDispatcher.php:60
#16 Concrete\Core\Http\DefaultDispatcher:dispatch in /concrete/src/Http/Middleware/DispatcherDelegate.php:39
#15 Concrete\Core\Http\Middleware\DispatcherDelegate:next in /concrete/src/Http/Middleware/FrameOptionsMiddleware.php:39
#14 Concrete\Core\Http\Middleware\FrameOptionsMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#13 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/StrictTransportSecurityMiddleware.php:36
#12 Concrete\Core\Http\Middleware\StrictTransportSecurityMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#11 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/ContentSecurityPolicyMiddleware.php:36
#10 Concrete\Core\Http\Middleware\ContentSecurityPolicyMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#9 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/CookieMiddleware.php:35
#8 Concrete\Core\Http\Middleware\CookieMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#7 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/ApplicationMiddleware.php:29
#6 Concrete\Core\Http\Middleware\ApplicationMiddleware:process in /concrete/src/Http/Middleware/MiddlewareDelegate.php:50
#5 Concrete\Core\Http\Middleware\MiddlewareDelegate:next in /concrete/src/Http/Middleware/MiddlewareStack.php:86
#4 Concrete\Core\Http\Middleware\MiddlewareStack:process in /concrete/src/Http/DefaultServer.php:85
#3 Concrete\Core\Http\DefaultServer:handleRequest in /concrete/src/Foundation/Runtime/Run/DefaultRunner.php:125
#2 Concrete\Core\Foundation\Runtime\Run\DefaultRunner:run in /concrete/src/Foundation/Runtime/DefaultRuntime.php:102
#1 Concrete\Core\Foundation\Runtime\DefaultRuntime:run in /concrete/dispatcher.php:45
#0 require in /index.php:2

I really cant seem to work out what I’m doing wrong. Anybody have any ideas?

Thanks.