Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Страницы 1
Допустим имеется товар, а у него могут быть форматы 80х90, 90х30. У каждого товара может быть разное кол-во форматов и их может быть несколько. Как такое сделать так и не додумался. А возможно ли все занести в одну Mysql ячейку и потом как-то её расфасовать?
Пробовал запрос такого вида
INSERT INTO `products`(`formats`) VALUES ([value-1]),([value-2]);
Он создает 2 новые строки значит не подойдет.
Так ну можно сделать так:
Привязку по id опять же и в отдельную таблицу заносить все форматы соответствующего товара. Ну тогда нужно сделать дофигища ячеек на всякий случай ведь я не знаю точного кол-во форматов.
Изменено umarov (26.07.2013 15:57:35)
Не в сети
Не в сети
}%Таблица с товарами (id, name, image, ...) и таблица с товарами по форматам (product_id, format_id, ...). В чём вопрос?
Не понял. 3 таблицы что ли создавать нужно?
Изменено umarov (26.07.2013 17:22:34)
Не в сети
Не в сети
- Если у тебя есть товар, а у него есть вариации, и товар хранится в таблице — логично создать вторую и хранить там только вариации. Либо сделать поле в первой и держать вариации там (serialize() и пр.), но тогда по ним нельзя будет выполнять запросы.
Еще один глупый вопрос:
Есть фильтр например:
В каждом из производителей может находиться несколько типов продукции, а может только одна. Все было бы просто, но я не хочу выводить всех производителей. Я хочу сделать чтобы по нажатию керамика выходили только производители содержащие керамическую продукцию. Пробовал по разному. Например в таблице с продукцией создавал type_id и manufacturers_id. По нажатию на фильтр проверялся type_id, а вот дальше трудности. Этот прием видимо не верен. Так же как и прием с созданием отдельной таблицы с type_id — пробовал.
Не в сети
Я бы сделал 3 таблицы: производители (id, название, адрес, …), товары (id, название, вес, описание, …), типы (id, название, описание, …). К ним добавляем ещё одну таблицу — собственно каталог: manufacturer_id, product_id, type_id, … (остаток_на_складе, заказов_за_месяц и ещё какие-то специфичные для производителя поля).
Таблица-каталог связана с тремя другими отношениями много-к-одному. Все три поля_id могут быть вместе уникальным ключом. При выборке из каталога используются JOIN.
Не в сети
Такое дело: Если не передавать в вид то все работает выводятся производители заданной категории, но когда выводишь в вид выводиться только одна. Очень интересно когда выводишь массив через print_r в контроллере не передавая в вид то выводится как положено, а как только передаешь в вид то выводится одна это при том что print_r в контролере и стоит выше view::make
Вот код
public function get_index($id) {
$chek_id = DB::table('collection')
->left_join('manufacturers', 'manufacturers.id', '=', 'collection.type_id')
->where('collection.type_id', '=', $id)
->get('manufacturers_id');
foreach ($chek_id as $id) {
$manufacturers = Manufacturers::where('id', '=', $id->manufacturers_id) -> get();
print_r($manufacturers);
return View::make('home.manufacturers') -> with('manufacturers', $manufacturers);
}
}
Извини нужно было сразу залогинится. var_dump возвращает 2 массива. Почему и в контролере выдается 1 результат понял. Это из-за return внутри foreach
Изменено umarov (27.07.2013 16:08:36)
Не в сети
Не в сети
}%Не могу ничего сказать. Возьми отладчик и пройдись по циклу, в таких случаях это куда быстрее, чем ждать ответа на форуме.
Во всей видимости это из за return. Нужно передать 3 объекта в вид. Причем они могут пополнятся значит в цикле. А как? Да это именно объекты так и написано manufacturers object
Изменено umarov (27.07.2013 16:23:02)
Не в сети
- Во всей видимости это из за return.
Ну ты даёшь. Я думал у тебя объект меняется при передаче в шаблон или ещё что-то.
В чём проблема с циклом? Либо передавай в шаблон массив всех нужных объектов, либо вызывай шаблон для каждого объекта, а результаты склеивай в строку. Я бы выбрал первый вариант: создаёшь отдельный шаблон тиа home.manufacturers или manufacturers.list, который вызывает в цикле шаблон home.manufacturer или manufacturers.info.
Не в сети
}%> Во всей видимости это из за return.
Ну ты даёшь. Я думал у тебя объект меняется при передаче в шаблон или ещё что-то.В чём проблема с циклом? Либо передавай в шаблон массив всех нужных объектов, либо вызывай шаблон для каждого объекта, а результаты склеивай в строку. Я бы выбрал первый вариант: создаёшь отдельный шаблон тиа %%home.manufacturers%% или %%manufacturers.list%%, который вызывает в цикле шаблон %%home.manufacturer%% или %%manufacturers.info%%.
Проблема в том что когда я ввожу return view::make чтобы передать переменную в вид передается почему то один объект как только я убираю return view::make то выводится как положено все объекты Дело в том что это не целый массив. Посредством этих манипуляций возвращается 3 массива(объекта) которые я и так
public $restful = true;
public function get_index($id) {
$chek_id = DB::table('collection')
->left_join('manufacturers', 'manufacturers.id', '=', 'collection.type_id')
->where('collection.type_id', '=', $id)
->get('manufacturers_id');
for ($i = 0; $i < count($chek_id); $i++) {
$manufacturers = Manufacturers::where('id', '=', $chek_id[$i]->manufacturers_id) -> get();
}
return View::make('home.manufacturers') -> with('manufacturers', $manufacturers);
}
}
перебрать. Но я чего то не так делаю. Может их объединить сначала нужно. Я конечно знаю функцию объединение массивов, но вот объединить их я не смог. Массив вида. Получается в цикле for несколько раз присваивается значение массива в $manufacturers и все она потом теряется а рендерить вид десять раз не то, да и пробывал рендер вида в цикл занести тоже не выходитю Афигеть что же делать(((
Array
(
[0] => Manufacturers Object
(
[attributes] => Array
(
[id] => 1
[title] => ABK
[logo] => ABK.jpg
[preview_img] => preview_abk.jpg
[desc] => Плитка от производителя ABK самая лучшая в мире!!!
)
[original] => Array
(
[id] => 1
[title] => ABK
[logo] => ABK.jpg
[preview_img] => preview_abk.jpg
[desc] => Плитка от производителя ABK самая лучшая в мире!!!
)
[relationships] => Array
(
)
[exists] => 1
[includes] => Array
(
)
)
)
Array
(
[0] => Manufacturers Object
(
[attributes] => Array
(
[id] => 2
[title] => Cavalli
[logo] => cavalli.jpg
[preview_img] => preview_abk.jpg
[desc] => Ahuennaya plita ot Roberto
)
[original] => Array
(
[id] => 2
[title] => Cavalli
[logo] => cavalli.jpg
[preview_img] => preview_abk.jpg
[desc] => Ahuennaya plita ot Roberto
)
[relationships] => Array
(
)
[exists] => 1
[includes] => Array
(
)
)
)
Изменено umarov (27.07.2013 20:16:28)
Не в сети
Не в сети
Не в сети
Что я хочу сделать. Я с помощью этого запроса
$chek_id = DB::table('collection')
->left_join('manufacturers', 'manufacturers.id', '=', 'collection.type_id')
->where('collection.type_id', '=', $id)
->get('manufacturers_id');
Вытаскивал manufacturers_id где все type_id = $id. То есть есть например категория керамика с id=1 который передается в url. Так же есть type_id в таблице продукция вот с ней то и сравнивается $id. Дальше вытаскиваются все manufacturers_id где type_id = $id. А потом мне нужно вытащить всех производителей где id = manufacturers_id. Этот manufacturers_id как видно из запроса записывается в переменную $chek_id. Дальше эту переменную нужно прогнать в цикле потому что возвращаемых данных может быть больше 1 как мы и наблюдали. А иначе как иначе никак. И дальше уже делать запрос такого вида
Manufacturers::where('id', '=', $chek_id[$i]->manufacturers_id) -> get();
Решение найдено:
<?php
class Manufacturers_Controller extends Base_Controller {
public $restful = true;
public function get_index($id) {
$chek_id = DB::table('collection')
->left_join('manufacturers', 'manufacturers.id', '=', 'collection.type_id')
->where('collection.type_id', '=', $id)
->get('manufacturers_id');
$manufacturers = array();
foreach ($chek_id as $id) {
$manufacturers[] = Manufacturers::where('id', '=', $id->manufacturers_id) -> get();
}
return View::make('home.manufacturers') -> with('manufacturers', $manufacturers);
}
}
Изменено umarov (27.07.2013 21:34:51)
Не в сети
Не в сети
Как думаешь целесообразно будет корзину с помощью кеша реализовать — chache?
Не в сети
public function post_card($id) {
Cookie::put('title', Input::get('title'), 60);
return Redirect::to('/');
}
нужно корзину реализовать. В этом скрипте получаем title нужного товара и записываем его в куку. Проблема в следующем: Если я добавляю в корзину другой товар кука конечно же перезаписыватся. Да ты прав php выучить нужно
Страницы 1