Laravel:将动态表名传递给模型,例如受保护的$table = "$tablename"



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

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

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

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

namespace App;
use IlluminateDatabaseEloquentModel;
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很陌生。

等待您的善意建议。

谢谢

最好使用fluent query builderdb

您可以通过插入,更新,读取,删除动态添加表名 操作

例如

从数据库获取记录

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

用于插入

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

用于自动添加created_at和updated_at添加迁移

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

最新更新