我可以使用laravel模型的实例而不是外墙吗?

时间:2014-07-08 09:39:58

标签: laravel model

我想知道是否可以/建议使用laravel模型的实例而不是使用Facade。为什么这么麻烦?我有一个将与许多表一起使用的模型,我想使用构造函数自动设置模型table。是否可能/可行,或者达到同样目的的最佳方法是什么?
我研究过没有太大的成功。

UPDATE
这就是场景:考试系统,其中“创建”不同的考试。创建考试后,将在名为Exam_#的数据库中创建一个表,其中#是考试的ID。我想从一个模型访问所有考试:Exam,但您看到模型要使用的特定表格会有很大差异,因此我们无法静态设置table变量。在调用模型(模型)之前,模型不应知道它将使用的表。这就是为什么我想知道当我打电话给ID之类的时候我是否可以通过考试的model。我希望我的问题现在更清楚了。

1 个答案:

答案 0 :(得分:0)

最后,Laravel仍然是PHP ......你可以在PHP中完成任何事情都可以在Laravel中完成。

是否可以/建议使用laravel模型的实例而不是使用Facade?

使用模型实例可以获得与使用静态外观完全相同的结果。

$user = User::find(1);

$user2 = new User();
$user2 = $user2->find(1);

上述模型的两个实例都包含相同的结果。

这是可取的吗?我真的不喜欢静态外观,它们给它们带来了比它们更值得的麻烦,特别是在测试时(尽管能够模拟它们,它们会形成紧密耦合,我们大多数人都需要松耦合)。我对此的回答是:根本不使用外墙。

实现同样目标的最佳方法是什么?

正如@JoelHinz建议的那样,创建一个具有共同属性的基础模型,然后按预期使用模型。即一个表到一个模型并创建它们之间的关系。不要在多个表格中使用相同的模型,这不是Laravel模型的预期方式,您将通过采用您提到的方法失去Eloquent提供的大量功能。

评论更新 为了让您开始在Laravel中进行测试,这是一个很好的端到端教程Tutsplus Laravel4 + Backbone。忽略主干部分,您感兴趣的是测试部分,这些部分从页面的1/3开始。这将使您立即测试控制器并向您介绍存储库模式以创建可测试的DAL结构。

一旦你开始编写测试,就可以很容易地为任何事情编写单元测试。它可能看起来像一个可怕的主题,但这完全取决于不了解它是如何工作的,它真的很简单。看一下PHPUnit文档,它是一个很好的资源。