我真的很喜欢 laravel handel 如何用几行代码来建立关系。但是,当有大量数据时,它会通过向数据库发出许多请求而减慢速度。
class Object extends Model {
public function users() {
return $this->hasMany(User::class);
}
}
class User extends Model {
proteced $appends = [
'url'
];
public function object() {
return $this->belongsTo(Object::class);
}
public function getUrlAttribute() {
return 'exmaple.com/object/' . $this->object->value . '/user/' . $this->id;
}
}
当我打电话时
return Object::with('users')->find(2);
它将始终对数据库进行新的查询以进行 URL 生成。
那么有没有一种干净的方法来减少查询量,以便我可以加快应用程序的速度?
在这种情况下,
您正在引发新查询,因为您正在调用未在 User 上加载的关系。您可以渴望加载更多:
Object::with('users.object')....
但你也可以无限地沿着这条线走下去,因为它们相互参照的方式。
如果您打算以这种方式使用它,则该方法可能不属于用户模型。