【问题标题】:How to insert id to database from text input如何从文本输入中将 id 插入数据库
【发布时间】:2017-03-18 20:33:39
【问题描述】:

您好,我已经搜索了 2 个多小时了,所以我会在这里问。

我有一个带有 product_id 的 eventlineitems 表。在创建表单上,我想输入产品名称,当表单提交时,控制器会为具有该名称的产品设置 product_id。

EventLineItems (hasOne product & belongsTo 事件)

id
event_id
product_id

产品

id
name

EventLineItemsController

public function store(Request $request)
{
  $this->validate(request(), [

    'event_id' => 'required',
    'product_id' => 'required',
    'quantity' => 'required'

  ]);

  $lineItem = new EventLineItem;

  $lineItem->event_id = $request->input('event_id');
  $lineItem->product_id = $request->input('product_id');
  $lineItem->quantity = $request->input('quantity','1');

  $lineItem->save();

  return back()->with('status','Product Added');

}    

view.blade

<input type="text" name="product_id" id="product_id" class="typeahead form-control" placeholder="Enter a product ID" required>

【问题讨论】:

  • 究竟是什么问题?
  • 我认为这是一个问题“在创建表单上,我想输入产品名称,当表单提交时,控制器会为具有该名称的产品设置 product_id。”
  • 是的,这是我的问题,我可以在请求中发送名称,但是如何找到关联名称的 id,然后设置我的 ->save() 来保存产品的 id。这是一个有 1 个关系

标签: php mysql laravel laravel-5 eloquent


【解决方案1】:

您可以使用 eloquent 按名称获取产品对象:

$product = Product::where('name', '=', request('name'));

然后访问产品id:

$product->id

必须有更简单、更优雅的解决方案,但它给了你想法。

希望对你有帮助。

【讨论】:

  • 是的,这就是我想要的,有没有办法拥有多个?就像它的 ID 被发送(数字)搜索或使用名称
  • 是的,来自控制器,您可以检查 request('name') 是否为整数并执行所需的操作。
  • @devjustin 如果它解决了您的问题,感谢您的验证。 ; )
  • 我将如何检查?我有` if (is_integer($request->input('product_id'))){ $lineItem->product_id = $request->input('product_id'); } 其他 { `
  • 我让它工作了 :) 使用了您的查询并添加了 ->orWhere('id', '=' , '$request')
猜你喜欢
  • 1970-01-01
  • 2013-02-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2021-10-29
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
相关资源
最近更新 更多