【问题标题】:inner query in laravel 5.3 query builderlaravel 5.3 查询生成器中的内部查询
【发布时间】:2017-10-26 23:05:02
【问题描述】:

我尝试使用 Laravel 内部查询获取数据,但我遇到了一个问题,我将值变量作为值传递,我的查询如下。

    $seller_name = $request->seller_name;
    $supplier_address = DB::table('supplier_addresses')
        ->where('company_main_name', function($query)
        {
            $query->select('company_main_name')
                ->where('company_name',$seller_name)
                ->from('supplier_addresses')
                ->get();
        })
        ->get();

如果我传递静态值而不是$seller_name,那么它可以完美运行,我检查了$seller_name 不为空,它显示错误变量未定义。

【问题讨论】:

  • 确保你从$seller_name = $request->seller_name;得到$seller_name
  • $seller_name 有一个值。
  • @HirenMangukiya 在function 呼叫后通过use($seller_name)
  • @HirenMangukiya 成功了吗?

标签: laravel laravel-query-builder inner-query


【解决方案1】:

你必须在函数中传递变量use ($seller_name)

$seller_name = $request->seller_name; 
$supplier_address = 
    DB::table('supplier_addresses')
       ->where('company_main_name', function($query) use ($seller_name) 
       {
              $query->select('company_main_name')
                    ->where('company_name',$seller_name) 
                    ->from('supplier_addresses') ->get(); 
       }) 
    ->get();

您可以在此处参考文档: https://laravel.com/docs/5.4/queries#conditional-clauses

【讨论】:

    【解决方案2】:

    您需要使用use$seller_name 传递给闭包。不要在闭包查询中使用 get() 来通过单个数据库查询获得结果。

    $supplier_address = DB::table('supplier_addresses')
        ->where('company_main_name', function($query) use ($seller_name) {
            $query->select('company_main_name')
                ->where('company_name', $seller_name)
                ->from('supplier_addresses');
        })
        ->get();
    

    您的代码也与此相同。

    $supplier_address = DB::table('supplier_addresses')
        ->where('company_name', $seller_name)
        ->get();
    

    【讨论】:

      【解决方案3】:

      试试这个,你必须像这样使用use 传递你的 $variable after function

      $seller_name = $request->seller_name;
      $supplier_address = DB::table('supplier_addresses')
              ->where('company_main_name', function($query ) use($seller_name)
              {
                  $query->select('company_main_name')
                      ->where('company_name',$seller_name)
                      ->from('supplier_addresses')
                      ->get();
              })
              ->get();
      

      【讨论】:

        【解决方案4】:
        $seller_name = $request->seller_name;
        $supplier_address = DB::table('supplier_addresses')
                ->where('company_main_name', function($query ) use($seller_name)
                {
                    $query->select('company_main_name')
                        ->where('company_name',$seller_name)
                        ->from('supplier_addresses')
                        ->get();
                })
                ->get();
        

        你忘记使用use

        【讨论】:

          【解决方案5】:

          您必须使用 use ($seller_name) 将变量传递给匿名函数

          $seller_name = $request->seller_name;
          $supplier_address = DB::table('supplier_addresses')
              ->where('company_main_name', function($query) use ($seller_name)
              {
                  $query->select('company_main_name')
                      ->where('company_name',$seller_name)
                      ->from('supplier_addresses')
                      ->get();
              })
              ->get();
          

          【讨论】:

            【解决方案6】:

            你必须使用uselike

            $seller_name = $request->seller_name;
            $supplier_address = DB::table('supplier_addresses')
                ->where('company_main_name', function($query) use ($seller_name)
                {
                    $query->select('company_main_name')
                        ->where('company_name',$seller_name)
                        ->from('supplier_addresses')->get();
                })
                ->get();
            

            【讨论】:

              猜你喜欢
              • 2016-12-31
              • 2016-11-16
              • 2017-06-24
              • 2015-12-13
              • 1970-01-01
              • 2017-03-31
              • 2018-06-02
              • 2021-12-03
              • 1970-01-01
              相关资源
              最近更新 更多