#laravel
#laravel
Вопрос:
Я получаю нулевой результат в city, но данные сохраняются, и при вставке я вставляю данные, city_id
а при вставке запроса city_id
было null, вы можете мне помочь? Спасибо
это моя модель :
class Company extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
public function city()
{
return $this->belongsTo(City::class);
}
и модель города :
class City extends Model
{
use SoftDeletes;
protected $dates = ['deleted_at'];
public function companies()
{
return $this->hasMany(Company::class);
}
и мой контроллер
public function store(Request $request)
{
$company_name = $request->input('name');
$city_name = $request->input('city_id');
$company_address = $request->input('address');
$data = new AppModelsCompany();
$data->name = $company_name;
$data->address = $company_address;
$data->city_id = $city_name;
// $data->save();
$city = new AppModelsCity();
//$data->companies->add($data);
$data->city()->associate($city->city_id);
$data->save();
if($data->save()){
$res['message'] = "Success!";
$res['value'] = "$data";
//return response($res);
return redirect('/companies')->with('success', 'Data has been added');
}else{
$res['message'] = "Not Success!";
$res['value'] = "$data";
return response($res);
}
и результат :
{
"id": 6,
"city_id": null,
"name": "aaa",
"address": "bbb",
"created_at": "2019-03-16 23:45:49",
"updated_at": "2019-03-16 23:45:49",
"deleted_at": null,
"city": null
},
and the form:
<form method="post" action="{{ url('/branches') }}">
<div class="form-group">
<label for="cityname" class="col-sm-3 control-label"><i class="fa fa-building"> amp;nbsp;</i>Company Name</label>
<div class="col-sm-4">
<select class="form-control" name="company_id" id="company_id" style="width: 100%;">
<option selected="selected">Company Name : </option>
@if (count($company) > 0)
@for($i = 0; $i < count($company); $i )
<option value="{{ $company[$i]->company_id }}">{{ $company[$i]['name'] }}</option>
@endfor
@endif
</select>
</div>
</div>
<div class="form-group">
<label for="name" class="col-sm-3 control-label">Branch Name :</label>
<input type="text" class="form-control" name="name"/>
</div>
<div class="form-group">
<label for="address">Address : </label>
<input type="text" class="form-control" name="address"/>
</div>
<div class="form-group">
<label for="cityname" class="col-sm-3 control-label"><i class="fa fa-building"> amp;nbsp;</i>City</label>
<div class="col-sm-4">
<select class="form-control" name="city_id" id="city_id" style="width: 100%;">
<option selected="selected">Pilih Kota : </option>
@if (count($city) > 0)
@for($i = 0; $i < count($city); $i )
<option value="{{ $city[$i]->city_id }}">{{ $city[$i]['name'] }}</option>
@endfor
@endif
</select>
</div>
</div>
<button type="submit" class="btn btn-primary">Add</button>
</form>
Комментарии:
1. можете ли вы показать нам свою форму?
2. Я полагаю, что ваш выбор неверен, вы получаете city_id в своем запросе? используйте
dd($request->city_id)
и покажите нам, что вы получаете, пожалуйста. Кроме того, откуда берется эта переменная $ city? не могли бы вы показать нам функцию?3. Нет, я не могу получить запрос, city_id равен нулю
4. Проблема в вашем выборе, тогда я напишу ответ.
Ответ №1:
Я считаю, что ваш выбор неверен, прежде всего, в вашей функции контроллера вы должны отправить города на эту страницу следующим образом:
$cities = City::all()
return view('your-view', compact('cities'));
Затем вы можете зациклить $cities
переменную в select и создать опцию для каждого города:
<select class="form-control" name="company_id" id="company_id" style="width: 100%;">
@foreach($cities as $city)
<option value="{{$city->id}}">{{$city->name}} </option>
@endforeach
</select>
В вашей функции хранения вы могли бы сделать это:
$data->city_id = $request->city_id;
$data->save();