当前位置: 首页 > 知识库问答 >
问题:

Laravel 5.3雄辩模型动态表属性

戚晨
2023-03-14

提前感谢您的时间。如果你赶时间,跳到粗体部分。

我有一个以下用例:应用程序的每个用户都使用自己的一组前缀表来创建有说服力的模型(即,对于code_发票使用Invoice.php,对于code_客户使用Client.php)。前缀在用户表中定义(例如users.code)。

在Laravel 5.2中,我已经能够通过在用户登录后读取运行时设置的配置(或会话)变量来轻松设置雄辩模型的$table属性。一切都很好,包括关系。

然而,在5.3更新之后,在运行时设置的任何配置值现在都会在对象中返回null(会话值也是如此)。我从文档中知道,会话现在在构造函数中不可用,建议的解决方案是中间件闭包,但是雄辩的类不能使用中间件闭包,因为它返回未定义的方法错误。

因此,我的问题有两个:如何动态设置Eloquent的$table属性和/或如何读取html" target="_blank">模型中的运行时配置值。

任何帮助都将不胜感激。

编辑:我可以使用from()方法为模型指定一个表。这是有效的:$model=\App\ModelName::from('prefix\u table'))-

有趣,是吗?:)


共有3个答案

戚修雅
2023-03-14

好的,对于其他面临同样问题的人来说,这是我的解决办法,我相信这已经足够干净了:

在登录控制器中,我没有尝试保存运行时配置变量或会话值并返回下一个请求,而是使用flash数据重定向:return redirect()-

我认为原始方法(在登录方法中存储会话或配置)的问题在于,在中间件运行之前加载了模型,因此该值返回null。使用重定向()-

我希望这对某些人有所帮助,因为在我想到这一点之前,我正要回到Laravel5.1。

凌景辉
2023-03-14

我在一个非常糟糕的用例中使用了这样的东西:

/**
 * Override to allow different servers to use different tables
 *
 * @return string
 */
public function getTable()
{
    if (is_null($this->table)) {
        if (str_contains(config('database.mysql.host'), 'SOMETHING_DIFFERENT')) {
            $this->table = 'database1.sales_rank';
        } else {
            $this->table = 'database2.sales_rank';
        }
    }
    return parent::getTable();
}
周兴朝
2023-03-14

要从配置中读取,可以执行以下操作:value=config('app.timezone') 阅读文档了解更多信息

要设置$table,您可以在模型中这样做:

protected $table = 'my_flights'; 

 类似资料:
  • 雄辩的关系如下: 商店属于许多商店时代(属于许多) 数据透视表(store\u day\u time\u stores)有一个名为“user\u id”的键,storedaytimes表有一个名为“date”的字段。 我想根据给定的“用户id(来自数据透视表)”和“开始”和“结束”日期(来自storedaytime表)过滤“storedaytimes”中的记录。 我现在的问题是 它产生了一个看起来

  • 我想创建动态laravel类,以便动态调用查询。这是我的密码 但是当我试图调用这个类以便使用这个代码创建一个对象时 我得到这个错误 函数App\CRUD::uu construct()的参数太少,在第1630行的/var/www/html/logging/vendor/laravel/framework/src/illighte/Database/Eloquent/Model.php中传递了0,至

  • 我有一个无法解决的问题。我有一个包含TitleID、TextID、ImageID的新闻表。还有三张表格,标题,文本,图片。我想把它们都放在一个模型里。但当我尝试时,得到的结果就像数组中的数组。但我想要的是: 雄辩的ORM对此的反应如下: 数据库结构 新闻= 头衔= 其他表类似于标题表。

  • 所以我有三个模型: 挑战 使用者 参赛者 挑战有它的主键 用户只有它的主键 而且进入者有外键挑战id和用户id 如果我从挑战中查询(我有挑战标识),用雄辩的方式让所有与该挑战相关的用户的最佳方式是什么?我基本上想要所有进入者数据和所有用户数据的集合。我一直在研究这种方法,但我似乎无法让它发挥作用。

  • 因此,我在JeffreyWay的屏幕广播中了解到,我可以使用Eloquent从注入到另一个模型的模型中获取相关id。 我正在关注他关于Laravel 5.4的系列报道。 在这里,我有一个用户到帖子的一对多关系。 应用程序/帖子 在我的用户模型中,我有一个发布方法,其中注入了发布模型。发布方法用于创建进入数据库的发布条目。 应用/用户 然后,我在PostsController中有一个存储方法,它在我

  • 我试图通过使用Laravel Eloquent获得数据,但我无法访问。无论何时尝试,它都显示尝试获取非对象的属性“name” 我有两个模型。类别和文章。类别有许多文章。以下是模型: 类别模型 文章模式 物品管理员 查看刀片(admin.article.pending) 在这里的刀片,我不能访问类别通过雄辩的属于功能,我没有得到背后的原因得到的消息: ErrorException(E_ERROR)试