【问题标题】:Limit to only one value in my drop-down list在我的下拉列表中限制为一个值
【发布时间】:2019-11-29 20:16:04
【问题描述】:

我有一个表单 payments 有 4 个字段 -> date_paying, type_sitting, number_seance, fk_student

在我的表单 trainings 中,我有 3 个字段 -> date_sitting, fk_payment, fk_student

我的问题是,当我想添加录音时,我在下拉列表中检索到相同值的 2 倍。

我真的只想保留一件物品

在我的 create.blade(trainings) 我有这个:

<div class="form-group {{ $errors->has('fk_payment') ? 'has-error' : '' }}">
   <label for="company-content">Payment </label>
     <select name="fk_payment" id="fk_payment" class="form-control" required="required" value="{{ old('fk_payment')}}"/>
        <option value="">Choice Payment</option>
           @foreach($payments as $payment)
             <option value="{{$payment->id}}" {{ old('fk_payment') == $payment->id ?  'selected' : '' }} >
             {{$payment->type_sitting}}
             </option>
           @endforeach
     {!! $errors->first('fk_payment', '<span class="help-block">:message</span>') !!}
  </select>

这是我的控制器培训

class TrainingController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */


    public function index()
    {
        $trainings = Training::oldest()->paginate(5);
        return view('admin.trainings.index', compact('trainings'));
                with('i', (request()->input('page', 1) -1) *5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {   

        $payments = Payment::all();
        $students = Student::all();
        return view('admin.trainings.create', compact('payments', 'students','trainings'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $request->validate([
                'date_sitting' => 'required',
                'fk_payment' => 'required',
                'fk_student' => 'required'


        ]);


       $exists = Training::where('date_sitting', $request->get('date_sitting'))->where('fk_payment', $request->get('fk_payment'))->where('fk_student', $request->get('fk_student'))->count();

       if (!$exists){


        //$payment = Payment::where('fk_student', $request->get('fk_student'))->first();

        $payment = Payment::where('fk_student', $request->get('fk_student'))
                    ->take(1)
                    ->get();

        if(!isset($payment)){ 
            return redirect()->route('trainings.index')
                    ->with('error', 'No Payment, no training for you!');
        }
        else{
            Training::create($request->all());
            return redirect()->route('trainings.index')
                    ->with('success', 'new data created successfully');
        }
    }


    }

控制器付款

class PaymentController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        $payments = Payment::oldest()->paginate(5);
        return view('admin.payments.index', compact('payments'));
                with('i', (request()->input('page', 1) -1) *5);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {   
        $students = Student::all();
        return view('admin.payments.create', compact('students', 'payments'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
     public function store(Request $request)
    {
        $request->validate([
                'date_payment' => 'required',
                'type_sitting' => 'required',
                'number_seance' => 'required',
                'fk_student' => 'required'

        ]);

       $exists = Payment::where('date_payment', $request->get('date_payment'))->where('type_sitting', $request->get('type_sitting'))->where('number_seance', $request->get('number_seance'))->where('fk_student', $request->get('fk_student'))->count();



       if (!$exists){
            Payment::create($request->all());
            return redirect()->route('payments.index')
                ->with('success', 'new data created successfully');
        }

        else{
            return redirect()->route('payments.index')
                ->with('error', 'doublon');

        }   

    }

模型 - 付款

class Payment extends Model
{
    //
    protected  $fillable = ['date_payment', 'type_sitting', 'number_seance',  'fk_student'];

    protected $dates = ['date_payment'];

    public function students(){
        return $this->belongsTo('App\Student', 'fk_student');
    }

    public function trainings(){

        return $this->hasMany('App\Training', 'fk_payment');
    }
}

模型 - 培训

class Training extends Model
{
    //
    protected $fillable = ['date_sitting',  'fk_payment', 'fk_student',];
    protected $dates = ['date_sitting'];

    public function students(){
        return $this->belongsTo('App\Student', 'fk_student');
    }

    public function payments(){
        return $this->belongsTo('App\Payment', 'fk_payment');
    }

}

【问题讨论】:

  • 你能在控制器中dd($payements) 并发布结果吗?

标签: laravel drop-down-menu


【解决方案1】:

更改您的特定刀片:

<div class="form-group {{ $errors->has('fk_payment') ? 'has-error' : '' }}">
   <label for="company-content">Payment </label>
     <select name="fk_payment" id="fk_payment" class="form-control" required="required" value="{{ old('fk_payment')}}"/>
        <option value="">Choice Payment</option>
           @foreach($payments as $payment)
               @php
                    $training = App\Training::where('fk_payment', $payment->fk_payment)->first();
               @endphp

             <option value="{{$payment->id}}" {{ old('fk_payment') == $payment->id ?  'selected' : '' }} >
             {{  $training->type_sitting )}}
             </option>
           @endforeach
     {!! $errors->first('fk_payment', '<span class="help-block">:message</span>') !!}
  </select>

See more

【讨论】:

  • 谢谢 我这里一定要修改吗? $payment = Payment::where('fk_student', $request-&gt;get('fk_student'))-&gt;first();-&gt;take() 放在哪里
  • @user11124425 嗯.. 你能把你的控制器的完整代码。我认为其中一定有一些东西可以帮助解决这个问题。
  • @user11124425 最后一个,很重要。你能显示两个模型(Payment ModelForeign Model。复制粘贴即可。
  • @user11124425 我认为$payment = Payment::where('fk_student', $request-&gt;get('fk_student')) -&gt;take(1) -&gt;get(); 是解决方案,但你能解释一下这有什么问题
  • 别担心,我希望很快晚安。再次感谢您的帮助。
猜你喜欢
  • 2017-09-23
  • 2019-10-30
  • 2012-11-20
  • 1970-01-01
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-14
相关资源
最近更新 更多