Size: a a a

Laravel для начинающих

2021 March 13

v

vasyok28 in Laravel для начинающих
Ребята есть тут кто подключил платежную систему enot ?
источник

v

vasyok28 in Laravel для начинающих
При оплате, должно вернуть массив с данными через POST, но ничего не приходит
источник

a

alexander in Laravel для начинающих
Ребят, подскажите. Вызываю save у модели, а поля в базу идут не в том порядке. Вместо id подставляется значение. Каким образом метод решает в каком порядке значения идут в билдер запроса
источник

Е

Евгений in Laravel для начинающих
alexander
Ребят, подскажите. Вызываю save у модели, а поля в базу идут не в том порядке. Вместо id подставляется значение. Каким образом метод решает в каком порядке значения идут в билдер запроса
В каком передаешь
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
Ребят, подскажите. Вызываю save у модели, а поля в базу идут не в том порядке. Вместо id подставляется значение. Каким образом метод решает в каком порядке значения идут в билдер запроса
В каком передаёшь, в таком и сохраняются.
А в чём проблема? Покажи что передаёшь, что сохраняется и как должно быть.
источник

Е

Евгений in Laravel для начинающих
alexander
Ребят, подскажите. Вызываю save у модели, а поля в базу идут не в том порядке. Вместо id подставляется значение. Каким образом метод решает в каком порядке значения идут в билдер запроса
А лучше покажи код)
источник

a

alexander in Laravel для начинающих
public function add($menu_id, $name, $href = '', $parent_id = 0){
       $menuElement = new MenuElement();
       $menuElement->menu_id = $menu_id;
       $menuElement->element_caption = $name;
       $menuElement->element_href = "{$href}";
       $menuElement->parent_id = $parent_id;
       if($menuElement->save()){
           echo 'Новый элемент меню добавлен';
       }
   }
А в запросе вместо id приходит name
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
public function add($menu_id, $name, $href = '', $parent_id = 0){
       $menuElement = new MenuElement();
       $menuElement->menu_id = $menu_id;
       $menuElement->element_caption = $name;
       $menuElement->element_href = "{$href}";
       $menuElement->parent_id = $parent_id;
       if($menuElement->save()){
           echo 'Новый элемент меню добавлен';
       }
   }
А в запросе вместо id приходит name
У модели, случайно, protected $primaryKey не переопределён?
источник

a

alexander in Laravel для начинающих
class MenuElement extends Model
{
   use HasFactory;

   /
    * @var mixed
    */
   private $menu_id;
   /

    * @var mixed
    */
   private $element_caption;
   /
    * @var mixed|string
    */
   private $element_href;
   /

    * @var int|mixed
    */
   private $parent_id;

}
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
class MenuElement extends Model
{
   use HasFactory;

   /
    * @var mixed
    */
   private $menu_id;
   /

    * @var mixed
    */
   private $element_caption;
   /
    * @var mixed|string
    */
   private $element_href;
   /

    * @var int|mixed
    */
   private $parent_id;

}
Так, стоп. Зачем переменные определил? Это так не работает.
источник

a

alexander in Laravel для начинающих
Я не сам. IDE "помогла"
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
class MenuElement extends Model
{
   use HasFactory;

   /
    * @var mixed
    */
   private $menu_id;
   /

    * @var mixed
    */
   private $element_caption;
   /
    * @var mixed|string
    */
   private $element_href;
   /

    * @var int|mixed
    */
   private $parent_id;

}
class MenuElement extends Model
{
 use HasFactory;

 protected $fillable = ['menu_id', 'name', 'element_caption', 'element_href', 'parent_id'];
}

public function add(int $menu_id, string $name, string $href = null, int $parent_id = 0)
{
   return MenuElement::create([
       'menu_id' => $menu_id,
       'element_caption' => $name,
       'element_href' => $href,
       'parent_id' => $parent_id,
   ]);
}
источник

a

alexander in Laravel для начинающих
alexander
Я не сам. IDE "помогла"
Спасибо. Теперь другая ошибка:
Illuminate\Database\Eloquent\MassAssignmentException: Add [menu_id] to fillable property to allow mass assignment on [App\Models\MenuElement].
Тут я вообще не очень понимаю про что.
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
Спасибо. Теперь другая ошибка:
Illuminate\Database\Eloquent\MassAssignmentException: Add [menu_id] to fillable property to allow mass assignment on [App\Models\MenuElement].
Тут я вообще не очень понимаю про что.
Точно. Забыл указать.
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
Спасибо. Теперь другая ошибка:
Illuminate\Database\Eloquent\MassAssignmentException: Add [menu_id] to fillable property to allow mass assignment on [App\Models\MenuElement].
Тут я вообще не очень понимаю про что.
Обновил пример.
источник

a

alexander in Laravel для начинающих
А. Это типа какие поля могу заполняться?
источник

a

alexander in Laravel для начинающих
Andrey Helldar
Обновил пример.
Вернулся к начальной ошибке. Не тот порядок при сохранении. Может кэш какой-то?
источник

С

Санжар in Laravel для начинающих
Где лучше хранить небольшие данные?

В моем случае так: я делаю запрос к API, данные из API привожу в нужный вид (JSON отсортированный), потом отдаю клиенту данные примерно такие:
  "person_name": [
   "Rosamund Pike",
   "Gal Gadot",
   "Tom Hardy",
   "Anya Taylor-Joy",
   "Scarlett Johansson"
 ],
 "person_image": {
   "img": "https:\/\/image.tmdb.org\/t\/p\/w500\/8ObNklHDi2hjdz0ayzJFB9jtqzm.jpg",
   "name": "Rosamund Pike"
 }

По сути клиент может вернуть имя, и дальше мне нужно чекать, правильно ли он угадал имя из картинки.
Хранить данные для person_image в БД, и при ответном запросе от клиента просто по бд чекать или как?
Знаю вопрос очевидный, просто пытаюсь самое лучшее решение найти. не уверен что ок будет обычную запись в бд.
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
А. Это типа какие поля могу заполняться?
И да, и нет.
Есть два варианта создания моделей - явное и неявное.

Явное:

$model = new Model();
$model-> foo = $name;
$model->bar = $href;
$model->save();

Явно указываем в какой ключ какое значение будет записано.

Неявное:

$model = Model::create($data);


Это поведение массового заполнения, т.е. в базу будут сохраняться из переданного массива только те ключи, которые указаны в атрибуте $fillable модели.

https://laravel.com/docs/8.x/eloquent#mass-assignment
источник

AH

Andrey Helldar in Laravel для начинающих
alexander
Вернулся к начальной ошибке. Не тот порядок при сохранении. Может кэш какой-то?
В этом коде нет понятия "порядок".
источник