Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在雄辩的ORM中进行数据库查询_Php_Laravel_Eloquent - Fatal编程技术网

Php 在雄辩的ORM中进行数据库查询

Php 在雄辩的ORM中进行数据库查询,php,laravel,eloquent,Php,Laravel,Eloquent,让我向你展示我的雄辩ORM课程: <?php namespace App\Http\Models\Transport_Type; use Illuminate\Database\Eloquent\Model; use App\Http\Models\Transport_Type\TransportType; class TransportType extends Model{ public $timestamps = false; public function

让我向你展示我的雄辩ORM课程:

<?php

namespace App\Http\Models\Transport_Type;

use Illuminate\Database\Eloquent\Model;
use App\Http\Models\Transport_Type\TransportType;

class TransportType extends Model{

    public $timestamps = false;

    public function foo($language_id){
        $transport_types = TransportType::join('translations', 'transport_types.name', '=', 'translations.id')
                            ->join('translation_entries', 'translations.id', '=', 'translation_entries.translation_id')
                            ->where('translation_entries.language_id', '=', $language_id)
                            ->orderBy('parent_id')
                            ->get(['transport_types.id', 'transport_types.parent_id', 'translation_entries.value']);

        return $transport_types;
    }
}

我更喜欢让我的雄辩的模型和控制器尽可能地空着,因为我更喜欢拥有我处理所有数据访问的存储库。有关如何在Laravel中执行此操作的示例,请参见


编辑:我不确定你的方法是否是一种好的做法。我只是想和大家分享一下我的观点,也许会有帮助:)

我不确定这是否是您正在寻找的,但是您可以使用查询范围而不是常规函数。这些也可以传递参数。因此,我可以使用TransportTypeRepository,而该存储库将具有此foo函数?是的,请记住,每个存储库只应具有一个源(模型)。因此,TransportTypeRepository->foo()和TransportTypeRepository->all()将是解决方法,而不是TransportType->all()和TransportType->foo();对我不知道完整的上下文,但我通常是这样做的,因为我的代码变得更加枯燥,可测试性也提高了。