国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

laravel數(shù)據(jù)庫(kù)模型蛇形命名自動(dòng)轉(zhuǎn)換駝峰命名

這篇具有很好參考價(jià)值的文章主要介紹了laravel數(shù)據(jù)庫(kù)模型蛇形命名自動(dòng)轉(zhuǎn)換駝峰命名。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

2023年6月20日15:10:59

我看了各種方案,但是多多少少都有各種問(wèn)題
建議使用 GitHub - kirkbushell/eloquence: A drop-in library for certain database functionality in Laravel, that allows for extra features that may never make it into the main project.

安裝

composer require kirkbushell/eloquence

添加到 provider

添加 eloquence service provider 在你的 config/app.php 文件中

'providers' => [

        /*
         * Application Service Providers...
         */
        Eloquence\EloquenceServiceProvider::class,
    ],

使用方法

在模型添加 use \Eloquence\Behaviours\CamelCasing;

<?php
namespace App\Models;

use Eloquence\Behaviours\CamelCasing;
use Illuminate\Database\Eloquent\Model;

class Feedback
{
    use CamelCasing;

    protected $table = 'feedback';
    protected $primaryKey = 'id';
    protected $guarded = [];
    public $timestamps = false;
}

以下是注意的幾點(diǎn):

1,add save的時(shí)候你的模型的對(duì)象屬性是蛇形命名還是駝峰命名都是可以,因?yàn)樵诎镎{(diào)用的

Str::snake($key)方法,如果是蛇形命名就不會(huì)改變,是駝峰就會(huì)轉(zhuǎn)換成蛇形,例如:

isset($where['nickName']) && $feedback->nickName = $where['nickName'];
$res = $feedback->save();

數(shù)據(jù)庫(kù)的字段是:nick_name

2,返回?cái)?shù)據(jù)的時(shí)候,會(huì)自動(dòng)駝峰轉(zhuǎn)換

{
	"code": 200,
	"msg": "操作成功",
	"data": {
		"count": 2,
		"list": [
			{
			"id": 13,
			"nickName": "33333",
			"contact": "11111",
			"content": "2222",
			"createAt": "2023-06-21 09:58:23",
			"updateAt": "2023-06-21 09:58:23",
			"platform": "PC",
			"lang": "zh-CN"
			}
		]
	}
}

數(shù)據(jù)庫(kù)的結(jié)構(gòu):
CREATE TABLE `feedback` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID',
 `nick_name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '反饋昵稱',
 `contact` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '聯(lián)系方式',
 `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '反饋內(nèi)容',
 `create_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
 `update_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
 `platform` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'PC' COMMENT '平臺(tái)類型',
 `lang` varchar(10) COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'zh-CN' COMMENT '語(yǔ)言類型',
 PRIMARY KEY (`id`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='反饋表';

3,聯(lián)表測(cè)試返回的數(shù)據(jù)

$banner = Banner::with(['admin_zx']);


class Banner extends Model
{

    use CamelCasing;

    protected $table = 'banner';
    protected $primaryKey = 'id';
    protected $guarded = [];

    public $timestamps = false;

    public function admin_zx()
    {
        return $this->hasOne(Admin::class, 'id', 'admin_id');
    }
}

返回?cái)?shù)據(jù):

{
	"id": 37,
	"name": "百億",
	"adminId": 5,
	"url": "l",
	"sort": 11,
	"startTime": null,
	"endTime": null,
	"createAt": "2022-01-21 15:50:50",
	"updateAt": "2022-01-23 22:52:56",
	"picPath": "/upload/image/20190322/57da8821d96f8391b084757a8d41e072.jpg",
	"videoPath": null,
	"platform": "10",
	"lang": "zh-CN",
	"adminZx": {
		"id": 5,
		"name": "admin",
		"password": "c3284d0f9",
		"salt": "",
		"sex": 3,
		"email": "",
		"mobile": "",
		"loginIp": "",
		"status": 1,
		"avatar": null,
		"realName": "admin",
		"loginTime": "2023-03-21 08:31:03",
		"adminGroupIds": "9",
		"isAdmin": 1,
		"sort": 255,
		"createAt": "2022-01-21 15:45:09",
		"updateAt": "2023-03-21 08:31:03"
	}
},

4,使用屬性自定義處理,不會(huì)影響返回nick_name轉(zhuǎn)化成駝峰

class Feedback extends Model
{
    use CamelCasing;

    protected $table = 'feedback';
    protected $primaryKey = 'id';
    protected $guarded = [];

    public $timestamps = false;


    public function getNickNameAttribute($value)
    {
        return !empty($value) ? json_decode($value, true) : '';
    }

    public function setNickNameAttribute($value)
    {
        $this->attributes['nick_name'] = !empty($value) ? json_encode($value) : '';
    }
}

5,一些基礎(chǔ)問(wèn)題說(shuō)明

1,為什么要用駝峰命名數(shù)據(jù)庫(kù),這個(gè)主要是個(gè)人習(xí)慣,但是類名,方法名,變量名laravel中大多數(shù)是駝峰
2,全部使用蛇形命名有什么問(wèn)題嗎?答:沒(méi)問(wèn)題
3,全部使用駝峰命名有什么問(wèn)題嗎?答:沒(méi)問(wèn)題
4,為什么要有這個(gè)命名轉(zhuǎn)化為駝峰命名的插件呢?其實(shí)為了代碼風(fēng)格統(tǒng)一,方便開發(fā)習(xí)慣


缺點(diǎn)
?


Admin::where('name', 'admin')->update(['token' => $toked, 'tokenTime' => date('Y-m-d H:i:s', time())]);

sql:
update `admin` set `token` = bd1066d7181192f555431503c3a04086, `tokenTime` = 2023-06-25 09:00:26 where `name` = admin

這樣操作會(huì)出現(xiàn)`update`等操作數(shù)組,`復(fù)雜SQL`,`原生SQL`都不會(huì)激活自動(dòng)轉(zhuǎn)換駝峰,蛇形轉(zhuǎn)換文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-496183.html

到了這里,關(guān)于laravel數(shù)據(jù)庫(kù)模型蛇形命名自動(dòng)轉(zhuǎn)換駝峰命名的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包