【问题标题】:Get the ID of a selected value from a dropdown selectbox using Laravel 5.1使用 Laravel 5.1 从下拉选择框中获取所选值的 ID
【发布时间】:2016-04-02 01:30:39
【问题描述】:

我已经有一段时间了,我想做的是从选择框中获取所选值的 id。使用这个 sn-p,它没有得到 id,我想知道为什么。我很困惑什么可能是错的

这段代码是获取选中值的id:

private static function compareCompany(ProductRequest $productRequest){
            $companyPicked = $productRequest->companyname;
            $listedCompanies = Company::where('user_id', '=', Auth::user()->id);
            $companies = new Company;
            if($companies->user_id === Auth::user()->id)
            {   
                foreach($listedCompanies as $company) {
                    if($company->companyname === $companyPicked)
                    {
                        return $company->id;
                    } 
                }
            }
        }

这是使用为公司返回的 id 创建新产品

public function store(ProductRequest $productRequest)
    {
       $product = new Product;
        $company = new Company;
       if($productRequest->isMethod('post')){

       $product->user_id     = Auth::user()->id;
       $product->company_id  = $this->compareCompany($productRequest);
       $product->companyname = $productRequest->companyname;
       $product->productname = $productRequest->productname;

       $product->save();
       return redirect()->route('companyindex')->with('message', 'Your question has been posted.');
       }else{
            return redirect('company-create')->withErrors($productRequest)->withInput();
        }
    }

这是风景:

<p>{!! Form::select('companyname', array('' => 'Select a Company') + $listCompanies) !!} </p>

这是用于将返回值绑定到视图的代码:

public function create()
    {

      $listCompanies = Company::where('user_id', '=', Auth::user()->id)->orderBy('companyname', 'desc')->lists('companyname', 'companyname')->toArray();
        return view('product.create')
        ->with('listCompanies', $listCompanies);
    }

【问题讨论】:

    标签: eloquent laravel-5.1 html-select laravel-routing laravel-blade


    【解决方案1】:

    -&gt;lists('companyname', 'companyname') 更改为-&gt;lists('companyname', 'id')

    它将返回Company模型表的id

    【讨论】:

      【解决方案2】:

      我怀疑问题出在您的compareCompany 方法上。那里有几个问题。

      这是你的代码(稍微整理一下):

      private static function compareCompany(ProductRequest $productRequest)
      {
          $companyPicked = $productRequest->companyname;
      
          $listedCompanies = Company::where('user_id', '=', Auth::user()->id);
      
          $companies = new Company;
      
          if($companies->user_id === Auth::user()->id)
          {   
              foreach($listedCompanies as $company) {
                  if($company->companyname === $companyPicked)
                  {
                      return $company->id;
                  } 
              }
          }
      }
      

      以下是问题:

      1. $listedCompanies = Company::where('user_id', '=', Auth::user()-&gt;id);

        此声明实际上并未生成公司列表。您需要在末尾添加-&gt;get(),如下所示:

      $listedCompanies = Company::where('user_id', '=', Auth::user()-&gt;id)-&gt;get();

      1. $companies = new Company;

        这会创建一个新的、未初始化的 Company 模型实例。在下一行,您继续检查该实例的user_id 属性,但它没有设置为任何内容,因为它是全新的。所以第一个if() 语句总是失败。目前尚不清楚您要在这里做什么,所以我不确定如何解决这个问题。我的猜测是你试图只过滤掉属于当前用户的公司,但你已经用你的Company::where(...)-&gt;get() 做到了,所以这没有必要。

      【讨论】:

      • 非常感谢。我感谢您的支持。我想做什么我想它是简单而直接的。总的来说,我想要实现的是从刀片文件中选择项目,带有隐藏文件并将其发送到服务器端。这个函数“compareCompany”是用来为用户比较公司是否真的存在,并得到公司的id。这就是我实例化公司类的原因。返回 id 后,应该将其存储为公司 id。请帮忙。谢谢。
      猜你喜欢
      • 2015-07-21
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 2011-09-06
      • 1970-01-01
      • 2015-09-23
      相关资源
      最近更新 更多