Laravel等框架模型关联的可用性浅析

2025-05-27 0 61

早期开发中,模型关联带来非常大的便利性。同时也提升了数据库查询效率(避免了重复查询,相关解释如 laravel 的 n+1 查询问题)。

比如说,获取用户信息的接口,接口中除了要返回 user 表的数据外,还需要返回类似 user_option 或者 user_info 等表的数据。这个时候用 laravel 的模型关联的形式如下:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21
class UserModel extends Model {

protected $table = 'user';

public $timestamps = false;

public function userOption()

{

return $this->hasOne(UserOptionModel::class , 'user_id' , 'id');

}

public function findById(int $user_id)

{

$res = self::with(['user_option'])

->find($user_id);

return $res;

}

}

class UserOptionModel extends Model {

protected $table = 'user_option';

public $timestamps = false;

}

模型关联从上述代码看,用起来相当便利!

但是当后期,你的系统用户量上去后,不可避免的要用上类似 redis 这样的缓存。假设用户表需要缓存的话,那么结果可能就是另外一种景象了。

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14
class UserCache {

// 获取用户信息

public static function findById(int $user_id)

{

// 获取缓存数据

$user = Redis::string('user_' . $user_id);

if (!empty($user)) {

return $user;

}

$res = UserModel::findById($user_id);

Redis::string('user_' . $user_id , $res);

return $res;

}

}

上述代码缓存了用户的信息到 redis,那如果针对某个用户他的 user 表主体信息没有发生改变,但是 user_option 表发生了改变,那么正常也应该删除该用户的 redis 缓存。

这种情况下,代码的复杂度就直线上升了!

所以,个人建议在代码开发过程中,不要使用模型关联

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对快网idc的支持。

原文链接:https://segmentfault.com/a/1190000021276865

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Laravel等框架模型关联的可用性浅析 https://www.kuaiidc.com/70779.html

相关文章

发表评论
暂无评论