回答編集履歴
2
サンプルコード追加
answer
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
そうであれば、モデルクラスの `$table` プロパティに都度テーブル名を指定してあげれば実現できます
|
4
4
|
|
5
5
|
```php
|
6
|
-
|
7
6
|
class BeautySalon extends Model {
|
8
7
|
// 省略
|
9
8
|
}
|
@@ -13,10 +12,27 @@
|
|
13
12
|
$salon1->where('user', 'suzuki')->get();
|
14
13
|
|
15
14
|
$salon2 = new BeautySalon();
|
16
|
-
$salon2->table = '
|
15
|
+
$salon2->table = 'salon_de_php';
|
17
16
|
$salon2->find(123)->get();
|
18
17
|
```
|
19
18
|
|
19
|
+
さらに、テーブル指定をコンストラクタに組み込めば多少スマートになります。
|
20
|
+
|
21
|
+
```php
|
22
|
+
class BeautySalon extends Model {
|
23
|
+
public function __construct($table, array $attributes = []){
|
24
|
+
parent::__construct($attributes);
|
25
|
+
$this->table = $table;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
$salon1 = new BeautySalon('beauty_laravel');
|
30
|
+
$salon1->where('user', 'suzuki')->get();
|
31
|
+
|
32
|
+
$salon2 = new BeautySalon('salon_de_php');
|
33
|
+
$salon2->find(123)->get();
|
34
|
+
```
|
35
|
+
|
20
36
|
ただ一般的にテーブルを使い分けるというのは基本的にバッドハックです。レコード量が多すぎるのであればデータベースのパーティション機能を使うべきですし、カラム数が多すぎるのであればテーブルを分けてリレーションシップを使うべきです。
|
21
37
|
|
22
38
|
上記のサンプルコードのように使っているとバグの温床になりかねませんし、ORMを使う意味が薄れてしまう気がします。
|
1
コード修正
answer
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
```php
|
6
6
|
|
7
|
-
class BeautySalon extends
|
7
|
+
class BeautySalon extends Model {
|
8
8
|
// 省略
|
9
9
|
}
|
10
10
|
|