Внутренний запрос в построителе запросов laravel 5.3
Я пытался получить данные, используя внутренний запрос 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
не является нулевым, это показывает, что переменная ошибки не определена.
6 ответов
Попробуйте это, вы должны передать переменную $ после функции с 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();
Вы должны передать переменную в использование функции ($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
Вы должны передать переменную анонимной функции с 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();
$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
Ты должен использовать 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();
Вам нужно пройти $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();