Laravel: передача динамического имени таблицы в модель, например protected $ table = "$ tablename" - PullRequest
0 голосов
/ 20 октября 2018

Таким образом, мой код успешно создает динамические таблицы точно такой же структуры (мне это нужно по моим собственным причинам).

Однако проблема возникает, когда я хочу добавить данные в любой из динамически создаваемыхТаблица, потому что у меня нет модели для нее, как у меня, когда я обычно создаю таблицы / модели.

Итак, мне было интересно, как я могу обойти эту проблему?

Может лиЯ как-то использую такую ​​логику?

namespace App;

use Illuminate\Database\Eloquent\Model;

class sys_cats extends Model
{
    // I know we can't use variable in class like this
    // but this is just to explain what kind of logic I have
    // in mind. 

     $category = Session::get('catName');

     protected $table = "$category";
     protected $primarykey = 'id';
     protected $fillable = [
     .
     .
     .

Итак, я предполагаю, что таким образом мы можем использовать эту модель для динамического изменения имени таблицы на имя, хранящееся в переменной сеанса.

Так что нам не нужно будет создавать отдельную модель для каждой из этих таблиц.

Это достижимо?Или я должен также создавать отдельный файл модели каждый раз, когда я динамически создаю таблицу в базе данных?

Извините, если то, что я предлагаю, в корне неверно или что-то связано.Я довольно новичок в PHP и Laravel.

Жду ваших добрых предложений.

Спасибо

1 Ответ

0 голосов
/ 20 октября 2018

лучше использовать fluent query builder дБ

вы можете динамически добавлять имя таблицы с операциями вставки, обновления, чтения, удаления

дляпример

получить запись из db

DB::table($tableName)->all()

для вставки

 DB::table($tableName)->insert(['name' => $name]);

для автоматически добавленного созданного_ати updated_at добавить в миграцию

$table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...