首页 > 解决方案 > 如何从 Laravel 关系中的记录中获取第一个条目?

问题描述

我得到了这个查询,它根据关系从我的数据库中获取结果。查询工作正常,但它从数据库/表中获取第一个条目,而不是数组的第一个值。

我该如何解决?

            $motor = Motor::query()
                ->where([
                    ['effect_id', '=', $request->effect_id],
                    ['poles', '=', $request->poles],
                    ['voltage_id', '=', $request->voltage_id],
                    ['active', '=', 1],
                ])
                ->whereHas('MotorSize', function (Builder $query) {
                    $query->whereIn('mounting', ['B5', 'B14', 'B34', 'B35']);
                })
                ->firstOrFail();

我尝试了不同的东西,例如:

将 orderBy 添加到 Motor 模型并在我的数据库中创建一个“优先级”字段,为每个字段指定一个 1 到 100 之间的数字:(我实际上认为这可行,但它仍然从表中获取第一个条目)

    public function MotorSize()
    {
        return $this->belongsTo('App\MotorSize')->orderBy('priority', 'ASC');
    }

我也尝试过这样的事情,但它是一团糟,从来没有让它工作:

$query->where(function ($query) {
    $query->where('mounting', 'like', 'B5');
})
->orWhere(function($query) {
    $query->where('mounting', 'like', 'B14');   
})
->orWhere(function($query) {
    $query->where('mounting', 'like', 'B34');   
})
->orWhere(function($query) {
    $query->where('mounting', 'like', 'B35');    
});

欢迎任何建议:)

标签: phplaravel

解决方案


推荐阅读