感谢您的时间提前。如果您匆忙,请跳至粗体部分。Laravel 5.3雄辩的模型动态表格属性
我有一个下面的用例:应用程序的每个用户都使用他自己的一套前缀表格作为Eloquent模型(即Code_invoices的Invoice.php和Code_clients的Client.php)。前缀在用户表中定义(例如users.code)。
在Laravel 5.2我已经能够通过读取用户登录后运行时设置的配置(或会话)变量,轻松设置Eloquent模型的$ table属性。一切正常,包括关系。
但是5.3更新后,在运行时设置的任何配置值现在都会在对象中返回null(与会话值一样)。我从文档中知道会话在构造函数中不可用,并且建议的解决方法是中间件闭包,但Eloquent类不能使用中间件闭包,因为它会返回未定义的方法错误。
所以我的问题是双重的:我如何动态设置Eloquent的$ table属性和/或如何读取模型中的运行时配置值。
任何帮助将不胜感激。
编辑: 我可以用from()
方法指定模型表。 这个作品: $model = \App\ModelName::from('prefix_table')->first();
但我真正的问题是关系。 这不起作用: $model = \App\ModelName::from('prefix_table')->with('relatedModel')->first()
没有,因为相关模型不知道使用什么表前缀。
有意思,是吧? :)
也许'DB :: setTablePrefix($ prefix)'在这种情况下可能非常方便。 – geoandri