例如:
$users = User::all();
$user = User::find(1)->get();
$sameUser = User::find(1)->with('roles')->get();
$user->is($sameUser) // true
$users->contains($user) // true
$users->contains($sameUser) // false
对于所有三项检查,它是否应该返回?
答案 0 :(得分:0)
并不是因为它没有处理这种关系,而是因为get()
电话搞乱了。 find()
返回用户的实例,并实际调用引擎盖下的User::where('id', '=', $id)->first();
,以便以下所有内容返回true:
$users = User::all();
$user = User::find(1);
$sameUser = User::with('roles')->find(1);
$user->is($sameUser)
$users->contains($user)
$users->contains($sameUser)
答案 1 :(得分:0)
https://github.com/laravel/framework/issues/18902
从技术上讲,如果一个人已经加载了,那么这些对象就不一样了 关系,而另一方则没有。虽然他们可能代表 数据库中的同一行,PHP无法知道。
在这种情况下,您可能会根据主键进行操作。