我想知道是否可以/建议使用laravel模型的实例而不是使用Facade。为什么这么麻烦?我有一个将与许多表一起使用的模型,我想使用构造函数自动设置模型table
。是否可能/可行,或者达到同样目的的最佳方法是什么?
我研究过没有太大的成功。
UPDATE
这就是场景:考试系统,其中“创建”不同的考试。创建考试后,将在名为Exam_#
的数据库中创建一个表,其中#
是考试的ID。我想从一个模型访问所有考试:Exam
,但您看到模型要使用的特定表格会有很大差异,因此我们无法静态设置table
变量。在调用模型(模型)之前,模型不应知道它将使用的表。这就是为什么我想知道当我打电话给ID
之类的时候我是否可以通过考试的model
。我希望我的问题现在更清楚了。
答案 0 :(得分:0)
最后,Laravel仍然是PHP ......你可以在PHP中完成任何事情都可以在Laravel中完成。
是否可以/建议使用laravel模型的实例而不是使用Facade? strong>
使用模型实例可以获得与使用静态外观完全相同的结果。
$user = User::find(1);
$user2 = new User();
$user2 = $user2->find(1);
上述模型的两个实例都包含相同的结果。
这是可取的吗?我真的不喜欢静态外观,它们给它们带来了比它们更值得的麻烦,特别是在测试时(尽管能够模拟它们,它们会形成紧密耦合,我们大多数人都需要松耦合)。我对此的回答是:根本不使用外墙。
实现同样目标的最佳方法是什么?
正如@JoelHinz建议的那样,创建一个具有共同属性的基础模型,然后按预期使用模型。即一个表到一个模型并创建它们之间的关系。不要在多个表格中使用相同的模型,这不是Laravel模型的预期方式,您将通过采用您提到的方法失去Eloquent提供的大量功能。
评论更新 为了让您开始在Laravel中进行测试,这是一个很好的端到端教程Tutsplus Laravel4 + Backbone。忽略主干部分,您感兴趣的是测试部分,这些部分从页面的1/3开始。这将使您立即测试控制器并向您介绍存储库模式以创建可测试的DAL结构。
一旦你开始编写测试,就可以很容易地为任何事情编写单元测试。它可能看起来像一个可怕的主题,但这完全取决于不了解它是如何工作的,它真的很简单。看一下PHPUnit文档,它是一个很好的资源。