#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();