From 2afb129b7b4b62bb06e834705d7469d492804156 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Sun, 18 Feb 2024 17:31:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../article/ArticleCommentController.php | 95 ++++++++++++++++++ .../article/ArticleCommentLikeController.php | 95 ++++++++++++++++++ .../article/ArticleLikeController.php | 95 ++++++++++++++++++ .../lists/article/ArticleCommentLikeLists.php | 65 ++++++++++++ .../lists/article/ArticleCommentLists.php | 66 +++++++++++++ app/admin/lists/article/ArticleLabelLists.php | 7 +- app/admin/lists/article/ArticleLikeLists.php | 65 ++++++++++++ .../logic/article/ArticleCommentLikeLogic.php | 98 +++++++++++++++++++ .../logic/article/ArticleCommentLogic.php | 95 ++++++++++++++++++ app/admin/logic/article/ArticleLikeLogic.php | 98 +++++++++++++++++++ app/admin/logic/article/ArticleLogic.php | 56 +++++++++-- .../article/ArticleCommentLikeValidate.php | 82 ++++++++++++++++ .../article/ArticleCommentValidate.php | 82 ++++++++++++++++ .../validate/article/ArticleLikeValidate.php | 82 ++++++++++++++++ app/common/model/article/ArticleComment.php | 26 +++++ .../model/article/ArticleCommentLike.php | 22 +++++ app/common/model/article/ArticleLike.php | 22 +++++ config/database.php | 2 + 18 files changed, 1143 insertions(+), 10 deletions(-) create mode 100644 app/admin/controller/article/ArticleCommentController.php create mode 100644 app/admin/controller/article/ArticleCommentLikeController.php create mode 100644 app/admin/controller/article/ArticleLikeController.php create mode 100644 app/admin/lists/article/ArticleCommentLikeLists.php create mode 100644 app/admin/lists/article/ArticleCommentLists.php create mode 100644 app/admin/lists/article/ArticleLikeLists.php create mode 100644 app/admin/logic/article/ArticleCommentLikeLogic.php create mode 100644 app/admin/logic/article/ArticleCommentLogic.php create mode 100644 app/admin/logic/article/ArticleLikeLogic.php create mode 100644 app/admin/validate/article/ArticleCommentLikeValidate.php create mode 100644 app/admin/validate/article/ArticleCommentValidate.php create mode 100644 app/admin/validate/article/ArticleLikeValidate.php create mode 100644 app/common/model/article/ArticleComment.php create mode 100644 app/common/model/article/ArticleCommentLike.php create mode 100644 app/common/model/article/ArticleLike.php diff --git a/app/admin/controller/article/ArticleCommentController.php b/app/admin/controller/article/ArticleCommentController.php new file mode 100644 index 0000000..ea9123a --- /dev/null +++ b/app/admin/controller/article/ArticleCommentController.php @@ -0,0 +1,95 @@ +dataLists(new ArticleCommentLists()); + } + + + /** + * @notes 添加评论 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function add() + { + $params = (new ArticleCommentValidate())->post()->goCheck('add'); + $result = ArticleCommentLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(ArticleCommentLogic::getError()); + } + + + /** + * @notes 编辑评论 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function edit() + { + $params = (new ArticleCommentValidate())->post()->goCheck('edit'); + $result = ArticleCommentLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(ArticleCommentLogic::getError()); + } + + + /** + * @notes 删除评论 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function delete() + { + $params = (new ArticleCommentValidate())->post()->goCheck('delete'); + ArticleCommentLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取评论详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function detail() + { + $params = (new ArticleCommentValidate())->goCheck('detail'); + $result = ArticleCommentLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/admin/controller/article/ArticleCommentLikeController.php b/app/admin/controller/article/ArticleCommentLikeController.php new file mode 100644 index 0000000..73a2672 --- /dev/null +++ b/app/admin/controller/article/ArticleCommentLikeController.php @@ -0,0 +1,95 @@ +dataLists(new ArticleCommentLikeLists()); + } + + + /** + * @notes 添加评论点赞 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function add() + { + $params = (new ArticleCommentLikeValidate())->post()->goCheck('add'); + $result = ArticleCommentLikeLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(ArticleCommentLikeLogic::getError()); + } + + + /** + * @notes 编辑评论点赞 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function edit() + { + $params = (new ArticleCommentLikeValidate())->post()->goCheck('edit'); + $result = ArticleCommentLikeLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(ArticleCommentLikeLogic::getError()); + } + + + /** + * @notes 删除评论点赞 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function delete() + { + $params = (new ArticleCommentLikeValidate())->post()->goCheck('delete'); + ArticleCommentLikeLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取评论点赞详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function detail() + { + $params = (new ArticleCommentLikeValidate())->goCheck('detail'); + $result = ArticleCommentLikeLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/admin/controller/article/ArticleLikeController.php b/app/admin/controller/article/ArticleLikeController.php new file mode 100644 index 0000000..8ab7893 --- /dev/null +++ b/app/admin/controller/article/ArticleLikeController.php @@ -0,0 +1,95 @@ +dataLists(new ArticleLikeLists()); + } + + + /** + * @notes 添加文章点赞 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function add() + { + $params = (new ArticleLikeValidate())->post()->goCheck('add'); + $result = ArticleLikeLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(ArticleLikeLogic::getError()); + } + + + /** + * @notes 编辑文章点赞 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function edit() + { + $params = (new ArticleLikeValidate())->post()->goCheck('edit'); + $result = ArticleLikeLogic::edit($params); + if (true === $result) { + return $this->success('编辑成功', [], 1, 1); + } + return $this->fail(ArticleLikeLogic::getError()); + } + + + /** + * @notes 删除文章点赞 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function delete() + { + $params = (new ArticleLikeValidate())->post()->goCheck('delete'); + ArticleLikeLogic::delete($params); + return $this->success('删除成功', [], 1, 1); + } + + + /** + * @notes 获取文章点赞详情 + * @return \think\response\Json + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function detail() + { + $params = (new ArticleLikeValidate())->goCheck('detail'); + $result = ArticleLikeLogic::detail($params); + return $this->data($result); + } + + +} \ No newline at end of file diff --git a/app/admin/lists/article/ArticleCommentLikeLists.php b/app/admin/lists/article/ArticleCommentLikeLists.php new file mode 100644 index 0000000..0fc4623 --- /dev/null +++ b/app/admin/lists/article/ArticleCommentLikeLists.php @@ -0,0 +1,65 @@ + ['comment_id', 'state', 'like_user'], + ]; + } + + + /** + * @notes 获取评论点赞列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function lists(): array + { + return ArticleCommentLike::where($this->searchWhere) + ->field(['id', 'comment_id', 'state', 'like_user']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取评论点赞数量 + * @return int + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function count(): int + { + return ArticleCommentLike::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/admin/lists/article/ArticleCommentLists.php b/app/admin/lists/article/ArticleCommentLists.php new file mode 100644 index 0000000..06317c1 --- /dev/null +++ b/app/admin/lists/article/ArticleCommentLists.php @@ -0,0 +1,66 @@ + ['article_id', 'state', 'comment_user'], + ]; + } + + + /** + * @notes 获取评论列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function lists(): array + { + return ArticleComment::where($this->searchWhere) + ->with(['title']) + ->field(['id', 'pre_id', 'content', 'article_id', 'state', 'comment_user']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取评论数量 + * @return int + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function count(): int + { + return ArticleComment::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/admin/lists/article/ArticleLabelLists.php b/app/admin/lists/article/ArticleLabelLists.php index 989cc7b..dcd64bf 100644 --- a/app/admin/lists/article/ArticleLabelLists.php +++ b/app/admin/lists/article/ArticleLabelLists.php @@ -6,7 +6,8 @@ namespace app\admin\lists\article; use app\admin\lists\BaseAdminDataLists; use app\common\model\article\ArticleLabel; use app\common\lists\ListsSearchInterface; - +use app\common\model\article\Article; +use app\common\model\setting\Label; /** * 文章标签列表 @@ -47,6 +48,10 @@ class ArticleLabelLists extends BaseAdminDataLists implements ListsSearchInterfa ->limit($this->limitOffset, $this->limitLength) ->order(['id' => 'desc']) ->select() + ->each(function($item){ + $item['article_id']=Article::where('id',$item['article_id'])->value('title'); + $item['label_id']=Label::where('id',$item['label_id'])->value('label_name'); + }) ->toArray(); } diff --git a/app/admin/lists/article/ArticleLikeLists.php b/app/admin/lists/article/ArticleLikeLists.php new file mode 100644 index 0000000..fd0efe4 --- /dev/null +++ b/app/admin/lists/article/ArticleLikeLists.php @@ -0,0 +1,65 @@ + ['article_id', 'state', 'like_user'], + ]; + } + + + /** + * @notes 获取文章点赞列表 + * @return array + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function lists(): array + { + return ArticleLike::where($this->searchWhere) + ->field(['id', 'article_id', 'state', 'like_user']) + ->limit($this->limitOffset, $this->limitLength) + ->order(['id' => 'desc']) + ->select() + ->toArray(); + } + + + /** + * @notes 获取文章点赞数量 + * @return int + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function count(): int + { + return ArticleLike::where($this->searchWhere)->count(); + } + +} \ No newline at end of file diff --git a/app/admin/logic/article/ArticleCommentLikeLogic.php b/app/admin/logic/article/ArticleCommentLikeLogic.php new file mode 100644 index 0000000..602531f --- /dev/null +++ b/app/admin/logic/article/ArticleCommentLikeLogic.php @@ -0,0 +1,98 @@ + $params['comment_id'], + 'state' => $params['state'], + 'like_user' => $params['like_user'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑评论点赞 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + ArticleCommentLike::where('id', $params['id'])->update([ + 'comment_id' => $params['comment_id'], + 'state' => $params['state'], + 'like_user' => $params['like_user'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除评论点赞 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public static function delete(array $params): bool + { + return ArticleCommentLike::destroy($params['id']); + } + + + /** + * @notes 获取评论点赞详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public static function detail($params): array + { + return ArticleCommentLike::findOrEmpty($params['id'])->toArray(); + } +} \ No newline at end of file diff --git a/app/admin/logic/article/ArticleCommentLogic.php b/app/admin/logic/article/ArticleCommentLogic.php new file mode 100644 index 0000000..fff84a6 --- /dev/null +++ b/app/admin/logic/article/ArticleCommentLogic.php @@ -0,0 +1,95 @@ +getMessage()); + return false; + } + } + + + /** + * @notes 编辑评论 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + ArticleComment::where('id', $params['id'])->update([ + 'content' => $params['content'], + 'state' => $params['state'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除评论 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public static function delete(array $params): bool + { + return ArticleComment::destroy($params['id']); + } + + + /** + * @notes 获取评论详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public static function detail($params): array + { + return ArticleComment::findOrEmpty($params['id'])->toArray(); + } +} \ No newline at end of file diff --git a/app/admin/logic/article/ArticleLikeLogic.php b/app/admin/logic/article/ArticleLikeLogic.php new file mode 100644 index 0000000..492db45 --- /dev/null +++ b/app/admin/logic/article/ArticleLikeLogic.php @@ -0,0 +1,98 @@ + $params['article_id'], + 'state' => $params['state'], + 'like_user' => $params['like_user'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 编辑文章点赞 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public static function edit(array $params): bool + { + Db::startTrans(); + try { + ArticleLike::where('id', $params['id'])->update([ + 'article_id' => $params['article_id'], + 'state' => $params['state'], + 'like_user' => $params['like_user'] + ]); + + Db::commit(); + return true; + } catch (\Exception $e) { + Db::rollback(); + self::setError($e->getMessage()); + return false; + } + } + + + /** + * @notes 删除文章点赞 + * @param array $params + * @return bool + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public static function delete(array $params): bool + { + return ArticleLike::destroy($params['id']); + } + + + /** + * @notes 获取文章点赞详情 + * @param $params + * @return array + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public static function detail($params): array + { + return ArticleLike::findOrEmpty($params['id'])->toArray(); + } +} \ No newline at end of file diff --git a/app/admin/logic/article/ArticleLogic.php b/app/admin/logic/article/ArticleLogic.php index 4225517..6897008 100644 --- a/app/admin/logic/article/ArticleLogic.php +++ b/app/admin/logic/article/ArticleLogic.php @@ -6,6 +6,8 @@ namespace app\admin\logic\article; use app\common\model\article\Article; use app\common\logic\BaseLogic; use app\common\model\article\ArticleContent; +use app\common\model\article\ArticleLabel; +use app\common\model\setting\Label; use think\facade\Db; @@ -29,12 +31,21 @@ class ArticleLogic extends BaseLogic { Db::startTrans(); try { - $res= Article::create([ + $res = Article::create([ 'title' => $params['title'], 'state' => $params['state'], 'top' => $params['top'] ]); - ArticleContent::create(['article_id'=>$res->id,'content'=>$params['content']]); + ArticleContent::create(['article_id' => $res->id, 'content' => $params['content']]); + if ($params['tag']) { + $label_id = Label::whereIn('label_name', $params['tag'])->column('id'); + foreach ($label_id as $v) { + $find = ArticleLabel::where('label_id', $v)->find(); + if (!$find) { + ArticleLabel::create(['article_id' => $res->id, ['label_id'] => $v]); + } + } + } Db::commit(); return true; } catch (\Exception $e) { @@ -65,11 +76,31 @@ class ArticleLogic extends BaseLogic // 'create_user' => $params['create_user'], // 'update_user' => $params['update_user'] ]); - $find=ArticleContent::where('article_id',$params['id'])->find(); - if($find){ - ArticleContent::where('article_id',$params['id'])->update(['content'=>$params['content']]); - }else{ - ArticleContent::create(['article_id'=>$params['id'],'content'=>$params['content']]); + $find = ArticleContent::where('article_id', $params['id'])->find(); + if ($find) { + ArticleContent::where('article_id', $params['id'])->update(['content' => $params['content']]); + } else { + ArticleContent::create(['article_id' => $params['id'], 'content' => $params['content']]); + } + if ($params['tag']) { + $arr = []; + $label_arr_id = []; + foreach ($params['tag'] as $vv) { + $arr[] = ['label_name' => $vv]; + $label_id = Label::where('label_name', $vv)->value('id'); + if ($label_id) { + $label_arr_id[] = $label_id; + } else { + $label = Label::create(['label_name' => $vv]); + $label_arr_id[] = $label->id; + } + } + foreach ($label_arr_id as $v) { + $find = ArticleLabel::where('label_id', $v)->find(); + if (!$find) { + ArticleLabel::create(['article_id' => $params['id'], 'label_id' => $v]); + } + } } Db::commit(); return true; @@ -103,6 +134,13 @@ class ArticleLogic extends BaseLogic */ public static function detail($params): array { - return Article::with('detail')->findOrEmpty($params['id'])->toArray(); + $detail = Article::with('detail')->findOrEmpty($params['id'])->toArray(); + if ($detail) { + $arr = ArticleLabel::where('article_id', $params['id'])->column('label_id'); + if ($arr) { + $detail['tag'] = Label::whereIn('id', $arr)->column('label_name'); + } + } + return $detail; } -} \ No newline at end of file +} diff --git a/app/admin/validate/article/ArticleCommentLikeValidate.php b/app/admin/validate/article/ArticleCommentLikeValidate.php new file mode 100644 index 0000000..998af8b --- /dev/null +++ b/app/admin/validate/article/ArticleCommentLikeValidate.php @@ -0,0 +1,82 @@ + 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + ]; + + + /** + * @notes 添加场景 + * @return ArticleCommentLikeValidate + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function sceneAdd() + { + return $this->remove('id', true); + } + + + /** + * @notes 编辑场景 + * @return ArticleCommentLikeValidate + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function sceneEdit() + { + return $this->only(['id']); + } + + + /** + * @notes 删除场景 + * @return ArticleCommentLikeValidate + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return ArticleCommentLikeValidate + * @author likeadmin + * @date 2024/02/18 15:41 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + +} \ No newline at end of file diff --git a/app/admin/validate/article/ArticleCommentValidate.php b/app/admin/validate/article/ArticleCommentValidate.php new file mode 100644 index 0000000..cc8029f --- /dev/null +++ b/app/admin/validate/article/ArticleCommentValidate.php @@ -0,0 +1,82 @@ + 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + ]; + + + /** + * @notes 添加场景 + * @return ArticleCommentValidate + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function sceneAdd() + { + return $this->remove('id', true); + } + + + /** + * @notes 编辑场景 + * @return ArticleCommentValidate + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function sceneEdit() + { + return $this->only(['id']); + } + + + /** + * @notes 删除场景 + * @return ArticleCommentValidate + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return ArticleCommentValidate + * @author likeadmin + * @date 2024/02/18 15:03 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + +} \ No newline at end of file diff --git a/app/admin/validate/article/ArticleLikeValidate.php b/app/admin/validate/article/ArticleLikeValidate.php new file mode 100644 index 0000000..55fbf9c --- /dev/null +++ b/app/admin/validate/article/ArticleLikeValidate.php @@ -0,0 +1,82 @@ + 'require', + ]; + + + /** + * 参数描述 + * @var string[] + */ + protected $field = [ + 'id' => 'id', + ]; + + + /** + * @notes 添加场景 + * @return ArticleLikeValidate + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function sceneAdd() + { + return $this->remove('id', true); + } + + + /** + * @notes 编辑场景 + * @return ArticleLikeValidate + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function sceneEdit() + { + return $this->only(['id']); + } + + + /** + * @notes 删除场景 + * @return ArticleLikeValidate + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function sceneDelete() + { + return $this->only(['id']); + } + + + /** + * @notes 详情场景 + * @return ArticleLikeValidate + * @author likeadmin + * @date 2024/02/18 15:47 + */ + public function sceneDetail() + { + return $this->only(['id']); + } + +} \ No newline at end of file diff --git a/app/common/model/article/ArticleComment.php b/app/common/model/article/ArticleComment.php new file mode 100644 index 0000000..433376f --- /dev/null +++ b/app/common/model/article/ArticleComment.php @@ -0,0 +1,26 @@ +hasOne(Article::class,'id','article_id')->bind(['article_title'=>'title']); + } + +} \ No newline at end of file diff --git a/app/common/model/article/ArticleCommentLike.php b/app/common/model/article/ArticleCommentLike.php new file mode 100644 index 0000000..127ab5a --- /dev/null +++ b/app/common/model/article/ArticleCommentLike.php @@ -0,0 +1,22 @@ + 'la_', 'strict' => true, 'engine' => null, + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', ], ], ]; \ No newline at end of file