Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Добрый день, у токенов есть поле expires_at,
ставлю дату на вчерашнюю но всё равно авторизация по токену проходит, как запретить авторизацию если "время жизни" токена прошло?
спасибо
День добрый,
Имею такую структуру каталога
как получить зная group_id, уникальные значения value из items_options
например:
[
{id: 1, title: Размер, value: [ 44,45,48]},
{id: 3, title: Цвет: value: [Синий, Красный]}
]
надо выбирать сразу продукты с ->whereHas на options с нужными условиями. подробнее про whereHas в документации
если есть возможность помочь то https://laravel.ru/forum/viewtopic.php?id=2257
сделал циклом но как я понимаю решение не идеальное
$items_id_arr = [];
foreach ($inp_filters as $key => $val) {
if ($val) {
$query_items_id = ItemOption::select('item_id');
if ($items_id_arr) $query_items_id->whereIn('item_id', $items_id_arr);
$query_items_id->where('option_id', $key);
$query_items_id->where('value', $val);
$items_id_arr = array_flatten(
$query_items_id->get()->toArray()
);
$query_items_id = null;
}
}
Если я правильно понял, то:
Model::where(function ($q) { $q->where('option_id', 1)->where('value', 'test1'); }) ->orWhere(function ($q) { $q->where('option_id', 2)->where('value', 'test2'); }) ->pluck('item_id');
Если уникальные ключи нужны, то еще через ->unique() можно прогнать.
Спасибо, не совсем это должно работать как фильтр, у товара есть параметры, мне нужно выделить те ид которые проходят по запросам
есть ид параметра и значение например:
1=>настольный
2=>чёрный
3=>гарантия
4=>intel
5=>....
мне нужно выбрать тот товар который подойдёт (option_id=1 и value=чёрный) и (option_id=4 и value=intel)
Вечер добрый, подскажите как выбрать из таблицы по option_id и value
имею таблицу:
| item_id | option_id | value |
|---------|-----------|-------|
| 1 | 1 | test1 |
| 2 | 1 | test |
| 3 | 1 | test1 |
| 4 | 2 | test1 |
| 5 | 2 | test |
| 1 | 2 | test2 |
| 2 | 2 | test |
| 3 | 3 | test |
| 3 | 2 | test2 |
| 5 | 3 | test |
делаю двойной выбор (должно получиться item_id [1, 3]):
select('item_id')
->where( function ( $query )
{
$query
->where('option_id', 1)
->where('value', 'test1');
})
->where( function ( $query )
{
$query
->where('option_id', 2)
->where('value', 'test2');
})
->get();
но выдаёт пустой запрос, подскажите как сделать множественный выбор
если поиск осуществлять в options то выводятся теже товары только с массивом options где присутствует в value 23
public function options()
{
return $this->belongsToMany('App\Option', 'items_options')->where('value', '23')->withPivot('sort', 'value');
}
Вылезает ошибка
Unknown column 'items_groups.items_options.option_id'....
всё правильно в таблице items_groups нет items_options.option_id
как именно в items_options сделать 'where '
Подскажите как сделать поиск по значению в опциях
вот так не получается:
$group_main = Group::find($id);
return $group_main
->options()
->wherePivot('options.value', 'тест')
->wherePivot('options.option_id', 10)
->where('price', '>' , $min)
->where('price', '<' , $max)
->paginate(15);
спасибо
$group = Group::find(1);
echo $group->items->with('options');
почему with не присоединяется?
BadMethodCallException
а у вас опции должны идти вместе с группами ? или в определенном товаре?
в товаре, но я вывожу все товары из группы почему бы не вывести их характеристики
Вот так работает: но options не выводятся
public function index()
{
$group = Group::find(1);
echo $group->items;
}
ошибся вот так:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Option extends Model
{
protected $table = 'options';
public $timestamps = false;
protected $fillable = ['title'];
}
Сделал так:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Group extends Model
{
protected $table = 'groups';
public $timestamps = false;
protected $fillable = ['title'];
public function items()
{
return $this->belongsToMany('App\Item', 'items_groups');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Item extends Model
{
protected $table = 'items';
public $timestamps = false;
protected $fillable = ['title', 'price', 'description'];
public function options()
{
return $this->belongsToMany('App\Option', 'items_options');
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Option extends Model
{
protected $table = 'options';
public $timestamps = false;
protected $fillable = ['sort', 'title', 'value'];
}
Пытаюсь вывести но ошибка Call to a member function items() on null
$group = Group::find(1)->items();
День добрый, хочется сделать каталог по такой схеме:
groups
таблица группа:
id
title
items
таблица товар
id
title
price
description
options
таблица параметры товара
id
title
value
items_options
таблица совмещения товара и параметров (у товара может быть несколько характеристик)
option_id
item_id
items_groups
таблица совмещения товара и группы (товар может принадлежать нескольким группам)
group_id
item_id
но вот как всё совместить? как будут выглядеть модели для этих таблиц?
например чтобы вывести все товары по id группы со всеми характеристиками?
ка вывести товар по id со всеми характеристиками?
как сохранить (при добавлении товара) в бд с характеристиками?
Большое спасибо!
Что то я совсем запутался, а как бы это выглядело? а если в items_options_value не будет записей?
а самое главное как в дальнейшем сделать выборку obj по ключам value из items_options_value
День добрый, имею 4 таблицы:
obj
id
item_id
items
id
name
description
items_options
id
name
items_options_value
id
item_id
option_id
value
Подскажите, я совсем запутался, как мне из модели obj выбрать items со всеми items_options_value принадлежащих items
Спасибо, подскажите а как занести информацию, если например связанных таблиц будет три?
Спасибо, даже не знал, очень удобно
День добрый, создал контроллер но не по философии laravel а чуть упростил (соединив вывод формы и запись формы)
и столкнулся с такой проблемой
Получается для 10 контроллеров мне нужно будет писать кучу кода? можно ли как то это упростить?
если сделать цыклом где имена контроллеров будет выдёргиваться из массива?
Route::get('category', array('uses' => 'CategoryController@index', 'as' => 'category.index'));
Route::get('category/create', array('uses' => 'CategoryController@edit', 'as' => 'category.create'));
Route::get('category/edit/{id}', array('uses' => 'CategoryController@edit', 'as' => 'category.edit'));
Route::post('category/store', array('uses' => 'CategoryController@store', 'as' => 'category.store'));
Route::post('category/store/{id}', array('uses' => 'CategoryController@store', 'as' => 'category.store'));
Route::get('category/destroy/{id}', array('uses' => 'CategoryController@destroy', 'as' => 'category.destroy'));
Route::controller() не совсем подходит т.к. нет имён роутов
Route::resource() не подходит т.к. (update и store) и (create и edit) нельзя объединить