php – 渴望加载对Laravel中的模型事件启动有一些意想不到的副作用

php – 渴望加载对Laravel中的模型事件启动有一些意想不到的副作用,第1张

概述我正在尝试创建一些测试. 这是我的测试类: class ExampleTest extends TestCase { public function setUp() { parent::setUp(); Artisan::call('migrate'); $this->seed(); Auth::loginUsing 我正在尝试创建一些测试.

这是我的测试类:

class ExampleTest extends TestCase {    public function setUp()    {        parent::setUp();        Artisan::call('migrate');        $this->seed();        Auth::loginUsingID(1);    }    public function testActionUpdateNew()    {        $action = new Action(Array());        $action->save();        var_dump($action->ID);        Action::with('reponses','contact','user','etudiant','entreprise','etude')->findOrFail($action->ID);    }    public function testEtudes()    {        $etudes=Etude::all()->toArray();        $this->assertCount(10,$etudes,"Nombre d'études incorrectes");        $numEtudes=count($etudes);        //BUGgy part        $etude= Etude::create(Array());        var_dump($etude->ID);        $etudes=Etude::all()->toArray();        $this->assertCount(11,"Nombre d'études incorrectes");        //10+1 should equal to 11 but it hasnt updated    }}

没有通过的测试是第二个:我计算开头的10个雄辩的对象练习曲的数量,然后我在数据库中添加一个练习曲(使用Etude :: create()),创建对象,因为$etude-> ID给出了一个实数.但是,Etude的数量还没有更新.

当我从Action :: with(‘reponses’,…)中的热切加载中删除’etude’时,问题就消失了

这是Action类中的练习曲关系:

public function etude() {    return $this->belongsTo('Etude');}

你们有没有想过如果laravel中的急切加载会有这种奇怪的行为以及如何解决这个问题?

编辑

我发现用(‘etude’)调用可以删除注册到Eloquent模型的事件:

启动练习方法:

public static function boot(){    parent::boot();    static::creating(function($etude)        {                       var_dump("creating etude"); //This doesn't get executed even when I run Etude::create(Array());        }    );}

因此,如果我在testEtudes的开头添加Etude :: boot(),它会再次起作用.这仍然很奇怪.

急切加载对事件或引导方法有影响吗?或者是每次测试后都没有自动调用引导方法?

在Laravel测试中,事件调度程序在每次测试之间重置,但模型仍然只启动一次,因为它们过着非常独立的生活.这意味着在每次测试之间,模型侦听器都会被删除但从不重新注册.解决方案是不使用boot()来注册模型事件,而是将它们放在一个单独的文件中 – 服务提供者或app / start / global.PHP中包含的文件(app / events.PHP是常见的) . 总结

以上是内存溢出为你收集整理的php – 渴望加载对Laravel中的模型事件/启动有一些意想不到副作用全部内容,希望文章能够帮你解决php – 渴望加载对Laravel中的模型事件/启动有一些意想不到的副作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1263489.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存