如何在选择菜单中仅显示“min_participants”和“max_participants”数据库列值之间的值?

时间:2018-03-17 15:53:23

标签: php laravel

我的视图显示了特定会议的详细信息。

每个会议可以有多种注册类型。注册类型表包含以下列:name,min_participants,max_participants等。

在此详细信息会议页面中,我将使用以下代码显示该会议的注册类型信息。注册类型名称工作正常,但我有一个选择菜单,因此用户可以选择有多少参与者想要注册每种注册类型。我怀疑如何做这一部分。因为,用户只能选择数据库列min_participants和max_participants中存在的最小和最大参与者之间的值。

例如,对于ID为“1”的会议,当用户访问“app.test / conf / 1”时,会出现注册类型“general”,其中“min_participants”列为“1”和“max_participants” “as”3“在数据库中。因此在选择菜单中应该只显示值“1,2,3”。

你知道怎么做吗?我现在选择这个菜单是静态的,因为我不明白怎么做。也许使用访问器方法“quantityBetweenAttribute”但我不理解逻辑应该如何在方法中。

 @foreach($registration_types as $rtype)
    <li class="list-group-item d-flex align-items-center justify-content-between">
            <span class="font-weight-semi-bold text-heading-blue">{{$rtype->name}}</span>
        <form>
            <select>
                <option selected="">1</option>
                <option>2</option>
                <option>3</option>
            </select>
    </form>
    </li>
@endforeach

会议模式:

class Conference extends Model
{
// A conference has many registration types
    public function registrationTypes(){
        return $this->hasMany('App\RegistrationType', 'conference_id');
    }
}   
public function quantityBetweenAttribute() {
    $registrationTypes = $this->registrationTypes();
}

RegistrationType型号:

class RegistrationType extends Model
{
    public function conference(){
        return $this->belongsTo('App\Conference');
    }
}

2 个答案:

答案 0 :(得分:1)

我认为这可行:

@foreach($registration_types as $rtype)
    <li class="list-group-item d-flex align-items-center justify-content-between">
        <span class="font-weight-semi-bold text-heading-blue">{{$rtype->name}}</span>
        <form>
            <select>
                @for($i = $rtype->min_participants; $i <= $rtype->max_participants; $i++)
                    <option {{ $i == $selectedType ? 'selected' : '' }}>{{ $i }}</option>
                @endfor
            </select>
        </form>
    </li>
@endforeach

请注意,您可以选择使用{{ $i == $selectedType ? 'selected' : '' }}通过将变量$ selectedType传递给视图来设置所选状态。

希望有所帮助:)

答案 1 :(得分:0)

您可以添加for循环:

@foreach($registration_types as $rtype)
    <li class="list-group-item d-flex align-items-center justify-content-between">
            <span class="font-weight-semi-bold text-heading-blue">{{$rtype->name}}</span>
        <form>
            <select>
             @for ($i = $rtype->min_participants; $i <= $rtype-> max_participants; $i++)
               <option selected="{{ $i === $rtype->min_participants }}">{{ $i }}</option>
             @endfor
            </select>
    </form>
    </li>
@endforeach