【问题标题】:Use both data from a dropdown list that is based on eloquent's list in laravel 4.2使用基于 laravel 4.2 中 eloquent 列表的下拉列表中的两个数据
【发布时间】:2015-09-26 16:19:55
【问题描述】:

我有这个基于 larvel 雄辩的下拉列表,我有点想同时使用它拥有的数据。名称和 ID。为了清楚地表明这一点,这是我控制器中的代码 sn-p

$modules = prchorder::lists('ModuleName','ModuleID');

然后我将其用作:

{{ Form::label('module', 'Select Module: ') }}
      {{ Form::select('ModuleInfo', array(null=>'Please Select Module') + $modules , Input::old('ModuleInfo'), array('class'=>'form-control'))}}

现在的问题是我需要同时获取“ModuleName”和“ModuleID”,因为当用户单击提交时,我将在控制器内的存储功能中使用它。我知道当我这样做时 $module = Input::get('ModuleInfo'); 我将获得的唯一数据是 ModuleID。有什么办法我也可以获得 ModuleName 吗?有什么建议吗?

【问题讨论】:

  • HTML 规范不允许提交除<option> 标记的value="xzy" 部分以外的任何内容。最好的方法是使用 ID 执行 prchorder::find(Input::get('ModuleInfo')) 来获取其他数据。
  • 感谢我尝试使用 `$modName = DB::select(DB::raw("SELECT ModuleName FROM dbo_modules WHERE ModuleID = ".$module))` 但出现错误提示 Array to string conversion当我使用它时。知道我做错了什么吗?
  • 大概$module 是一个数组或$modName 导致一个数组,您可能正在尝试回应它。顺便说一下,这种查询方式也对 SQL 注入开放。请改用DB::table('dbo_modules')->select('ModuleName')->where('ModuleID', $module)->get()(或查看原始查询中的参数化)
  • 谢谢!处理内部连接时如何使用它?

标签: laravel laravel-4 eloquent


【解决方案1】:

HTML 规范不允许提交除 <option> 标记的 value 属性以外的任何内容。

虽然您可以使用分隔符将所有数据放入此属性中,但可能不建议这样做。最好的方法是只使用 ID 来检索处理表单提交的控制器中所需的其他数据。

例如

<select name="module_id">
    <option value="1">Module Id 1</option>
</select>

然后您可以使用

检索有关控制器中所选模块的信息
// based on your model in your question
prchorder::find(Input::get('module_id')); 

// Or just using query builder
$rows = DB::table('table')->select(['columns'])->where('module_id', Input::get('module_id'))->get();

// Also, look at the ->first() method instead of ->get()
// if you only expect a single result. i.e. one module

Query Builder manual page 上还有一些关于查询构建器(包括 cmets 中提到的连接)的更多信息。

【讨论】:

    猜你喜欢
    • 2015-06-01
    • 2015-12-15
    • 1970-01-01
    • 2017-01-14
    • 2020-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多