小编Die*_*des的帖子

Laravel 5 急切加载属于关系

我在使用 Laravel 5 和 Eloquent 时遇到问题。我有 3 个模型,分别称为 Ad、AdEngine 和 Engine:

class Ad 
{
    ...
    public function engineAd()
    {
        return $this->belongsTo('App\Models\EngineAd', 'engine_ad_id', 'id');
    }
    ...
}

class EngineAd 
{
    ...
    public function engine()
    {
        return $this->belongsTo('App\Models\Engine', 'engine_id', 'id');
    }
    ...
}

class Engine {...}
Run Code Online (Sandbox Code Playgroud)

在我的 Ad Class 中,我有一个名为 title 的方法,它使用了所属关系关系,如下所示:

public function title() 
{
    return $this->engineAd->engine->title;
}
Run Code Online (Sandbox Code Playgroud)

对于第一个关系 Ad -> AdEngine,我使用预先加载来获取所有 AdEngine:

$ads = Ad::with('engineAd');
Run Code Online (Sandbox Code Playgroud)

但是对于关系 AdEngine -> Engine,Laravel 会为每次迭代生成一个额外的查询,我可以在这里使用预先加载或类似的东西吗?

select * from `engine` where `engine`.`id` = '1' limit 1 …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-5

4
推荐指数
2
解决办法
2791
查看次数

Laravel 5 Repository内部服务提供商

我的laravel 5项目中存在以下问题.我有一个名为MacroServiceProvider.php的表单宏的服务提供程序.有些宏应该从数据库接收数据,我目前正在使用该模型并以雄辩的方式获得结果,但我想使用存储库,所以我创建了我的存储库,但我不能将它直接注入我的服务提供者.

我想要这样的东西:

...
public function register(MyRepoInterface $repo)
    {
        $registers = $repo->findAll();
        Form::macro...
    }
...
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

谢谢.

php laravel-5

3
推荐指数
1
解决办法
5936
查看次数

标签 统计

laravel-5 ×2

php ×2

eloquent ×1

laravel ×1