我希望将文本类型存储在数据库中,而不是 id Ajax Laravel 7
Posted
技术标签:
【中文标题】我希望将文本类型存储在数据库中,而不是 id Ajax Laravel 7【英文标题】:I want text type to be stored in database instead of the id Ajax Laravel 7 【发布时间】:2020-11-15 23:55:36 【问题描述】:我是阿贾克斯的新手。所以,请原谅我缺乏知识。当我通过view
中的data
时,我在我的数据库中得到IDs
。即使我从下拉依赖菜单中传递了text
,也可以解释一下!
请查看这 2 个表格类别
和产品
我想在我的视图中从类别('Désignation' => first table)中获取名称 - 但我得到了 ID。请帮忙。
控制器
public function create()
$prod=ProductCat::all();
return view('Achats.create',compact('prod'));
public function findProductName(Request $request)
$data = Product::select('Désignation','id') -> where('catégorie', $request->id) -> take(100) -> get();
return response()->json($data);
public function findRef(Request $request)
$p = Product::select('Référence')->where('id',$request->id)->first();
return response()->json($p);
路线
Route::get('create','AchatController@create')->name('create.Achat');
Route::get('/findProductName','AchatController@findProductName');
Route::get('/findRef','AchatController@findRef');
查看
<form action=" route('Achat.store')" method="POST" enctype="multipart/form-data">
<span>Product Category: </span>
<select style="width: 200px"class="form-control catégorie" name="catégorie" id="catégorie" >
<option value=" " disabled="true" selected="true">-Select-</option>
@foreach($prod as $cat)
<option value="$cat->id">$cat->Désignation</option>
@endforeach
</select>
<span>Product Name: </span>
<select name ="Désignation" class="form-control Désignation" id="Désignation" style="width: 200px" >
<option value="" disabled="true" selected="true">Product Name</option>
</select>
<span>Product ref: </span>
<input name="Référence" id="Référence" class="form-control Référence" type="text" >
<br>
ajax
<script type="text/javascript">
$(document).ready(function()
$(document).on('change','.catégorie',function()
// console.log("hmm its change");
var cat_id=$(this).val();
// console.log(cat_id);
var div=$(this).parent();
var op=" ";
$.ajax(
type:'get',
url:'!!URL::to('findProductName')!!',
data:'id':cat_id,
success:function(data)
//console.log('success');
//console.log(data);
//console.log(data.length);
op+='<option value="0" selected disabled>chose product</option>';
for(var i=0;i<data.length;i++)
op+='<option value="'+data[i].id+'">'+data[i].Désignation+'</option>';
div.find('.Désignation').html(" ");
div.find('.Désignation').append(op);
,
error:function()
);
);
$(document).on('change','.Désignation',function ()
var prod_id=$(this).val();
var a=$(this).parent();
console.log(prod_id);
var op="";
$.ajax(
type:'get',
url:'!!URL::to('findRef')!!',
data:'id':prod_id,
dataType:'json',//return data will be json
success:function(data)
console.log("Référence");
console.log(data.Référence);
// here price is column name in products table data.coln name
a.find('.Référence').val(data.Référence);
,
error:function()
);
);
);
【问题讨论】:
【参考方案1】:看起来您将 Id 作为值传递,因此在您的数据库表中获取 Id 的原因。
改变
@foreach($prod as $cat)
<option value="$cat->id">$cat->Désignation</option>
@endforeach
到
@foreach($prod as $cat)
<option value="$cat->Désignation">$cat->Désignation</option>
@endforeach
这应该会有所帮助。
【讨论】:
感谢您的回复,但问题是当我尝试这样做时,当我选择类别时下拉菜单没有显示其他产品以上是关于我希望将文本类型存储在数据库中,而不是 id Ajax Laravel 7的主要内容,如果未能解决你的问题,请参考以下文章