php – 将Eloquent模型绑定到服务容器

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 将Eloquent模型绑定到服务容器脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有人使用IoC容器绑定到Eloquent模型?

例如,我有一个我的帐户和类别雄辩模型的存储库. Account模型与Categories具有hasmany关系.类别存储库将Account存储库注入构造函数.

相反,我想注入一个像这样的实际账户模型……

在我的服务提供商中:

$this->app->bind(App\Models\Account::class,function ($app) {
    return (Auth::check()) ? Auth::user()->account : null;
});

在我的存储库中

use App\Models\Account;

class CategoryReposITory
{
    PRivate $account;

    public function __construct(Account $account = null)
    {
        // check and throw error if null
        $this->account = $account;
    }

    public function getAll()
    {
        return $this->account->categories()->get();
    }
}

如果我将一个实际的雄辩模型绑定到构造函数中,那么这是不好的做法,还是我会陷入可预见的陷阱?

解决方法

虽然你可以这样做,但你可能不想这样做.如果您这样做,IoC容器将始终使用该绑定来解析帐户,这不是您正在寻找的.

更合适的方法是为如何解析CategoryRepository而不是Account定义绑定.这样,在解析CategoryRepository的代码中,您可以确保始终传入实际帐户,如果不可用则确保为null.

$this->app->bind(App\Repos\CategoryRepository::class,function ($app) {
    $account = Auth::check() ? Auth::user()->account : null;
    return new App\Repos\CategoryRepository($account);
});

脚本宝典总结

以上是脚本宝典为你收集整理的php – 将Eloquent模型绑定到服务容器全部内容,希望文章能够帮你解决php – 将Eloquent模型绑定到服务容器所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。