Как я могу сохранить данные из тега select, который отображает данные из таблицы из базы данных Laravel 5.6

#laravel

#laravel

Вопрос:

Я хочу сохранить данные из другой таблицы, которую я выбираю из тега выбора

Данные поступают из другой модели, модели денежных переводов, и я хочу выбрать имя денежного перевода и получить его идентификатор, чтобы сохранить его в таблице счетов

 --Bill Controller:

<?php

namespace AppHttpControllers;

use IlluminateHttpRequest;
use AppModelsBill;
use AppModelsRemittent;

class BillController extends Controller
{
  public function create(){
        $remittents = Remittent::select('remittent')->get();
        return view('bills.create', compact('remittents'));
    }
}
  
 --Bill Model:

<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class Bill extends Model
{
    protected $table = 'bills';
    protected $fillable = ['number','remittent_id'];
    protected $guarded = ['id'];

    public function remittent()
    {
        return $this->belongsTo(Remittent::class);
    }
}
  
 --Remittent Model:

?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

class Remittent extends Model
{
    protected $table = 'remittents';
    protected $fillable = ['remittent'];
    protected $guarded = ['id'];

    public function bill()
    {
        return $this->hasMany(Bill::class);
    }
}
  
 --The view:

@extends('master')
@section('content')
<h2>Add a bill</h2>
@if($errors->all())
    <div class="alert alert-danger">
        @foreach($errors->all() as $error)
            <li>{{$error}}</li>
        @endforeach
    </div>
@endif
<form action="{{route('bills.store')}}" method="post">
    @csrf
    <div class="form-group">
        <label>Bill number</label>
        <input type="number" name="number" id="number" class="form-control">
    </div>
    <div class="form-group">
        <label>Remittent</label>
        <select class="form-control">
            @foreach($remittents as $remittent)
                <option value="$remittent->id">{{ $remittent->remittent}}</option>
            @endforeach
        </select>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary">Add a bill</button>
    </div>
</form>
@endsection
  

Дело в том, что в таблице MySQL ожидаемое методом store значение является целочисленным значением, и когда я выбираю параметр из тега select, это строковое значение, поэтому я хочу знать, как получить идентификатор из таблицы денежных переводов, когда я выбираю его из тега select.

Спасибо.

Ответ №1:

В вашем шаблоне блейда ошибка в следующей строке:

 <option value="$remittent->id">{{ $remittent->remittent}}</option>
  

Вам нужно заключить все варианты использования переменных в фигурные скобки, независимо от того, видит ли это пользователь или это невидимая разметка. Итак, просто измените его на следующее:

 <option value="{{ $remittent->id}} ">{{ $remittent->remittent }}</option>
  

И в вашем контроллере выберите оба, id и remittant :

 Remittant::select(['id', 'remittant']) - >get();