0

我尝试使用 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它不为空,它显示错误变量未定义。

4

6 回答 6

4

您必须在函数使用中传递变量 ($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

于 2017-05-26T09:58:33.530 回答
2

use试试这个,你必须像这样在函数之后传递你的 $variable

$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();
于 2017-05-26T06:37:30.817 回答
1

你必须使用use喜欢

$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();
于 2017-05-26T06:36:09.567 回答
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();
于 2017-05-26T06:36:21.633 回答
1
$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

于 2017-05-26T06:45:07.763 回答
0

您需要$seller_name使用use. 不要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();
于 2017-05-26T06:51:45.740 回答