php - Laravel:将动态表名称传递给模型,例如 protected $table = "$tablename"

标签 php mysql laravel laravel-5.6

因此,我的代码成功创建了结构完全相同的动态表(出于我自己的原因,我需要这种方式)。

但是,当我想将数据添加到任何动态创建的表中时,问题就出现了,因为我没有它的模型,就像我通常创建表/模型时那样。

所以,我想知道如何解决这个问题?

我可以以某种方式使用这种逻辑吗?

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 = [
     .
     .
     .

所以我假设,这样,我们可以使用这个模型将表名称动态更改为存储在 session 变量中的名称。

因此我们不必为每个表创建单独的模型。

这可以实现吗?或者每次在数据库中动态创建表时都必须创建一个单独的模型文件?

如果我的建议根本上是错误的或有任何相关的内容,我很抱歉。我对 PHP 和 Laravel 还很陌生。

等待您的好意建议。

谢谢

最佳答案

更好地使用流畅的查询构建器 db

u can add dynamically table name with insert,update,read,delete operation

例如

get record from db

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

for insert

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

for automatically added created_at and updated_at add in migration

$table->timestamp('created_at')->default(\DB::raw('CURRENT_TIMESTAMP'));
$table->timestamp('updated_at')->default(\DB::raw('CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP'));

关于php - Laravel:将动态表名称传递给模型,例如 protected $table = "$tablename",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52905313/

相关文章:

php - 确定functions.php [wpml]中的语言

mysql - 将多行合并为一行 Mysql

mysql - 将 WP 站点手动移动到新主机和域时如何调整 URL 设置?

mysql - 无需 Foreach 循环的批量更新查询 Eloquent - Laravel 5.1

php - 使用 PHPexcel 插件生成的可下载 Excel 文件中没有获取任何值

php - Paypal PAYOUT_NOT_AVAILABLE

php - 使用纯 CodeIgniter 创建 RESTful API?

mysql - 如何在所有表和所有列中查找字符串?

php - Laravel 查询生成器,调用 count() 时使用自定义选择

mysql - 无法在现有表上添加外键