Laravel 使用多資料庫和 Model 表名去 s

lyxxxh發表於2019-04-06

模型 表名去掉s

有時候會遇到奇葩的要求

我們建立的模型都是繼承
通過原始碼

Illuminate\Database\Eloquent\Model;

public function getTable()
{
  if (! isset($this->table)) {
  return str_replace(\
  '\\', '', Str::snake(Str::plural(class_basename($this)))\
 );\ }
  return $this->table;
}

沒辦法改了 呼叫Str::snake的 不可能去改Str::snake吧

public function setTable($table)\
{
  $this->table = $table;\

  return $this;
}

改這個就好了


直接髮結果 這是最後的結果 以後所有模型都繼承Models
$connection 是據庫的連結配置 有時候一個專案要用幾個庫的時候

class Models extends  Model
{

    protected $connection = 'ymysql';

    //刪除s 
    public function getTable()
    {
        $table = parent::getTable(); // TODO: Change the autogenerated stub
        return substr($table,0,-1);
    }

}

模型分庫和去掉s已可以了 用查詢構造器怎麼分庫?

//如果要用查詢構造器 DB::table('q')->get();
還是用預設mysql的配置 想換成我們的其他庫可以建立個服務提供者
laravel去掉模型s 和多庫


控制器裡面

laravel去掉模型s 和多庫

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章