成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Laravel 模型間關(guān)系設(shè)置分表方法

syoya / 3562人閱讀

摘要:如這個很簡單,那么在模型間關(guān)系比如,等使用這種方式的情況下,如何設(shè)置分表呢找了半天沒找到好的辦法,以為例,只好復(fù)制類中的方法,改成,并傳入表名,并且在函數(shù)里對象實(shí)例化后調(diào)用,果然可以。

在實(shí)際開發(fā)中經(jīng)常用到分庫分表,比如用戶表分成 100 張,那么這個時候查詢數(shù)據(jù)需要設(shè)置分表,比如 Laravel 的 Model 類中提供了 setTable 方法:

/**
 * Set the table associated with the model.
 *
 * @param  string  $table
 * @return $this
 */
public function setTable($table)
{
    $this->table = $table;
 
    return $this;
}

那么對數(shù)據(jù)表的增刪改查需要先 new 一個模型實(shí)例,再設(shè)置表名。如:

(new Circle())->setTable("t_group_" . hashID($userid, 20))
->newQuery()
->where("group_id", $request->group_id)
->update($attributes);

這個很簡單,那么在模型間關(guān)系比如 HasOne,HasMany 等使用這種方式的情況下,如何設(shè)置分表呢?

找了半天沒找到好的辦法,以 HasOne 為例,只好復(fù)制 Model 類中的 HasOne 方法,改成 myHasOne,并傳入表名,并且在函數(shù)里對象實(shí)例化后調(diào)用 setTable,果然可以。

代碼如下:

public function detail()
{
    return $this->myHasOne(Circle::class, "group_id", "group_id", "t_group_" . hashID($this->userid, 20));
}
 
public function myHasOne($related, $foreignKey = null, $localKey = null, $table)
{
    $foreignKey = $foreignKey ?: $this->getForeignKey();
 
    $instance = (new $related)->setTable($table);
 
    $localKey = $localKey ?: $this->getKeyName();
 
    return new HasOne($instance->newQuery(), $this, $instance->getTable() . "." . $foreignKey, $localKey);
}

不知道大家有沒有更優(yōu)雅的方式。

(原文地址:https://blog.tanteng.me/2018/...)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28628.html

相關(guān)文章

  • 首發(fā),laravel最優(yōu)雅的分表、關(guān)聯(lián)、分頁查詢,手冊方法的熟練運(yùn)用。

    摘要:前幾天寫了一遍關(guān)于分表關(guān)聯(lián)的查詢,但是我個人覺得還不算完美,于是今天重新看了一下模型的底層代碼,終于寫出我暫時覺得最滿意的代碼風(fēng)格,簡潔優(yōu)雅是核心。關(guān)聯(lián)查詢用了渴求式加載,就能有效減少的條數(shù),保證數(shù)據(jù)庫的性能。 前幾天寫了一遍關(guān)于laravel分表關(guān)聯(lián)的查詢,但是我個人覺得還不算完美,于是今天重新看了一下laravel模型的底層代碼,終于寫出我暫時覺得最滿意的代碼-laravel風(fēng)格,...

    fuchenxuan 評論0 收藏0
  • 深入理解 Laravel Eloquent(三)——模型關(guān)系(關(guān)聯(lián))

    摘要:是什么是一個,全稱為,翻譯為對象關(guān)系映射如果只把它當(dāng)成數(shù)組庫抽象層那就太小看它了。所謂對象,就是本文所說的模型對象關(guān)系映射,即為模型間關(guān)系。至此,深入理解系列文章到此結(jié)束。 原文發(fā)表在我的個人網(wǎng)站:深入理解 Laravel Eloquent(三)——模型間關(guān)系(關(guān)聯(lián)) 在本篇文章中,我將跟大家一起學(xué)習(xí) Eloquent 中最復(fù)雜也是最難理解的部分——模型間關(guān)系。官方英文文檔中...

    2501207950 評論0 收藏0
  • Laravel 中的一個后期靜態(tài)綁定

    摘要:實(shí)驗(yàn)一個抽象類,有個方法,通過延遲靜態(tài)綁定實(shí)例化并返回。這里如果把注釋打開,打印的就是重寫的值如果把抽象類改成普通類,改成的方式實(shí)例化,結(jié)果就不同了,打印的屬性都是各自類的屬性。 (原文地址,內(nèi)容以原文為準(zhǔn),可能修改或者補(bǔ)充:https://blog.tanteng.me/2017/...) 關(guān)于 PHP 的 new static 延遲靜態(tài)綁定,或者叫后期靜態(tài)綁定,在 Laravel...

    30e8336b8229 評論0 收藏0
  • Laravel核心解讀--Database(四) 模型關(guān)聯(lián)

    摘要:為關(guān)聯(lián)關(guān)系設(shè)置約束子模型的等于父模型的上面設(shè)置的字段的值子類實(shí)現(xiàn)這個抽象方法通過上面代碼看到創(chuàng)建實(shí)例時主要是做了一些配置相關(guān)的操作,設(shè)置了子模型父模型兩個模型的關(guān)聯(lián)字段和關(guān)聯(lián)的約束。不過當(dāng)查詢父模型時,可以預(yù)加載關(guān)聯(lián)數(shù)據(jù)。 Database 模型關(guān)聯(lián) 上篇文章我們主要講了Eloquent Model關(guān)于基礎(chǔ)的CRUD方法的實(shí)現(xiàn),Eloquent Model中除了基礎(chǔ)的CRUD外還有一個...

    gekylin 評論0 收藏0
  • Laravel 的 ORM 返回的數(shù)據(jù)類型小結(jié)

    摘要:一簡介的數(shù)據(jù)庫查詢構(gòu)造器提供了一個方便流暢的接口,用來創(chuàng)建及運(yùn)行數(shù)據(jù)庫查詢語句。的查詢構(gòu)造器使用參數(shù)綁定,來保護(hù)你的應(yīng)用程序免受注入的攻擊。和返回的是影響行數(shù),即失敗為,成功為刪除行數(shù)。 相信很多人在學(xué)習(xí) Laravel 時,會對 ORM 返回的數(shù)據(jù)類型產(chǎn)生混淆,如返回集合,?;蛘哒麛?shù)類型,下面將對增刪改查操作進(jìn)行一個小結(jié)。 一、簡介 Laravel 的數(shù)據(jù)庫查詢構(gòu)造器提供了一個方便、...

    LeviDing 評論0 收藏0

發(fā)表評論

0條評論

syoya

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<