感谢您提前的时间。如果您赶时间,请跳到粗体部分。
我有一个以下用例:应用程序的每个用户都使用他自己的一组前缀表作为Eloquent Models(即code_invoices的Invoice.php和code_clients的Client.php)。前缀在users表中定义(例如users.code)。
在Laravel 5.2中,通过读取用户登录后在运行时设置的配置(或会话)变量,我能够轻松设置Eloquent模型的$ table属性。一切正常,包括关系。 / p>
但是在5.3更新之后,在运行时设置的任何配置值现在在对象中返回null(会话值也是如此)。我从文档中知道会话现在在构造函数中不可用,建议的解决方法是中间件闭包,但是Eloquent类不能使用中间件闭包,因为它返回一个未定义的方法错误。
所以我的问题有两个:如何动态设置Eloquent的$ table属性和/或如何读取模型中的运行时配置值。
非常感谢任何帮助。
编辑:
我可以使用from()
方法为模型指定表格。
这有效:
$model = \App\ModelName::from('prefix_table')->first();
但我真正的问题是关系。
这不起作用:
$model = \App\ModelName::from('prefix_table')->with('relatedModel')->first()
没有,因为相关模型不知道要使用哪个表前缀。
有意思,对吧? :)
答案 0 :(得分:1)
要从配置中读取,您可以执行以下操作:$value = config('app.timezone');
阅读documentation了解更多
并设置$table
你可以在模型中执行此操作:
protected $table = 'my_flights';
答案 1 :(得分:0)
我使用类似的东西用于非常糟糕的用例:
String