If you want the easiest way, I advise ZonePlus module: ZonePlus v3.2.0 | Construct dynamic zones and effectively determine players and parts within their boundaries
For your case, you can use it like this:
local Zone = require(game:GetService("ReplicatedStorage").Zone)
local container = workspace.YourModel
local zone1 = Zone.new(container)
zone1.playerEntered:Connect(function(player)
-- do something
end)
zone1.playerExited:Connect(function(player)
-- do something
end)