Intereting Posts
Как загрузить пользовательские файлы конфигурации с помощью codeigniter? Как передать переменные в Zend? Изменение navbar в bootstrap, если вход в систему Невозможно разобрать XML-данные с двоеточием (:) из ответа с помощью getNamespaces () URL-адрес URL-адреса URL и параметр Строка выполнения командной строки в PHP Symfony2 – определить, находится ли пользователь в защищенном брандмауэре Как разрешить удаленный доступ к моему WAMP-серверу для мобильных устройств (Android) Что такое кеш байт-кода и как его использовать в PHP? Я пытаюсь представить форму jQuery ajax () в Codeigniter … но ничего не происходит … :( Повторное использование проекта PHP в Eclipse / Aptana Studio 3 Codeigniter – маршрутизация на контроллер, если он существует, если не использовать dafault Symfony 2 Вход только в основной домен Как избавиться от eval-base64_decode, как файлы вирусов PHP? Magento – Как вы возвращаете результаты неограниченного статического блока CMS (с определенным «Идентификатором») на страницу CMS

Как это сделать в Laravel, подзапрос, где в

Как я могу сделать этот запрос в Laravel:

SELECT `p`.`id`, `p`.`name`, `p`.`img`, `p`.`safe_name`, `p`.`sku`, `p`.`productstatusid` FROM `products` p WHERE `p`.`id` IN ( SELECT `product_id` FROM `product_category` WHERE `category_id` IN ('223', '15') ) AND `p`.`active`=1 

Я мог бы также сделать это с помощью соединения, но мне нужен этот формат для производительности.

Solutions Collecting From Web of "Как это сделать в Laravel, подзапрос, где в"

Рассмотрим этот код:

 Products::whereIn('id', function($query){ $query->select('paper_type_id') ->from(with(new ProductCategory)->getTable()) ->whereIn('category_id', ['223', '15']) ->where('active', 1); })->get(); 

Взгляните на расширенную документацию для Fluent: http://laravel.com/docs/queries#advanced-wheres

Вот пример того, что вы пытаетесь достичь:

 DB::table('users') ->whereIn('id', function($query) { $query->select(DB::raw(1)) ->from('orders') ->whereRaw('orders.user_id = users.id'); }) ->get(); 

Это даст:

 select * from users where id in ( select 1 from orders where orders.user_id = users.id ) 

Вы можете использовать переменную, используя ключевое слово "use ($ category_id)"

 $category_id = array('223','15'); Products::whereIn('id', function($query) use ($category_id){ $query->select('paper_type_id') ->from(with(new ProductCategory)->getTable()) ->whereIn('category_id', $category_id ) ->where('active', 1); })->get(); 

Следующий код работал для меня:

 $result=DB::table('tablename') ->whereIn('columnName',function ($query) { $query->select('columnName2')->from('tableName2') ->Where('columnCondition','=','valueRequired'); }) ->get(); 

Laravel 4.2 и более поздние версии, могут использовать запрос отношения try:

 Products::whereHas('product_category', function($query) { $query->whereIn('category_id', ['223', '15']); }); public function product_category() { return $this->hasMany('product_category', 'product_id'); } 
 Product::from('products as p') ->join('product_category as pc','p.id','=','pc.product_id') ->select('p.*') ->where('p.active',1) ->whereIn('pc.category_id', ['223', '15']) ->get();