Ребята у кого выдает ошибку SQLSTATE[HY000]: General error: 1824 Failed to open the referenced table 'categories' (SQL: alter table `posts` add constraint `post_category_fk` foreign key (`category_id`) references `categories` (`id`)) . Вам просто нужно поменять местами миграции , меняете дату миграции так чтобы категория была создана раньше. Потом делаете php artisan migrate:fresh . И все работает
@imngio66742 жыл бұрын
Спасибо тебе добрый человек. Сколько бы я времени убил, чтобы до этого додуматься.
@spitzer40772 жыл бұрын
При этом у автора видоса всё сработало :)
@ge6lr2 жыл бұрын
красава)
@morozalexey2 жыл бұрын
Спасибо!!
@evgenyglizhin5477 Жыл бұрын
Спасибо, выручил!
@ВалерийОжерельев-к6й Жыл бұрын
Еще один момент для тех кто решил ошибку путем замены миграций местами. Там где мы в модели пишем функцию posts у вас будет ошибка, нет такого столбца, вам нужно указать не post_id а category_id
@АртёмИвасечкин Жыл бұрын
От души бро!
@masterng56 Жыл бұрын
спасибо, очень помогло
@eldaraliev4579 Жыл бұрын
А как у него сработало?
@Frog-6nm Жыл бұрын
А я думаю, что за post_id 😂
@ЕкатеринаЩвецоваАй бұрын
А я всю голову сломал, не мог понять откуда берется этот ключ ведь мы такой ключ не создавали. Еще ввело в заблуждение что на видео все работает, это вообще непонятно
@DimAlbisoara Жыл бұрын
If you got the 1005 error at 9:30 after running php artisan migrate:fresh , do so: 1)Drop all your tables 2)Create table categories. 3)Create table posts. do the same steps from the very beggining of the video. I mean, add these lines in your posts migration: $table->unsignedBigInteger('category_id')->nullable(); $table->index('category_id', 'post_category_idx'); $table->foreign('category_id', 'post_category_fk')->on('categories')->references('id'); Execute php artisan migrate:fresh
@Noname-y3h9g Жыл бұрын
Хорошо что я догадался, что вместо posts_id надо прописать category_id в функции модели)
@ВалерийФроловский5 ай бұрын
также
@joepix2412 жыл бұрын
Всё заработало только после того, как понял, что 'post_id' в моделях надо заменить на 'category_id', так как при создании таблицы posts нигде не создаем ничего с 'post_id'. Спасибо за урок)
@Technical_Expert2 жыл бұрын
да, человек учитель от бога, что сказать, сколько он делает таких ошибок просто ужас. Ну хоть что-то и на том спасибо. Самое интересное написал это со словами "часто люди путаются". Видимо после таких объяснений.
@Technical_Expert2 жыл бұрын
@Sergei , я прекрасно понимаю, что выдать довольно объемный курс и при этом всё предусмотреть требуется много времени. Но ошибок всё таки много. Одна из самых распространенных - у человека нет заготовок кода, о котором он рассказывает, поэтому часто делает описки, возвращается и ищет где, к примеру, ошибся в имени переменной, или посреди видео может передумать и назвать весь файл совсем по другому. В результате, чтобы повторить за ним уходит куча времени. Также он не рассказывает ни структуру предмета, ни каких либо базовых знаний о функциях. Может оно так в php принято - не знать базу, но для Си++ программиста это выглядит диковато.
@handleftman2 жыл бұрын
@@Technical_Expert а зачем с++ идти в пхп, взял готовую cms и в продакшен кинул 😅Но касательно ошибок - рад, что народ тут сразу это подмечает, сам пришёл искать post_id после просмотра видео.
@YeremaAlmaty2 жыл бұрын
rahmet bro
@serhiilunov4989 Жыл бұрын
Дякую, чоловіче!
@KucherUTube Жыл бұрын
post_id - нет такого столбца в таблице posts и categories. В моделе Category нужно прописать category_id. Не понятно, как прошло у автора без ошибок. Вообще курс классный! Автор разжевывает очень доходчиво. Небольшие уроки разбиты по темам - это удобно, и слушать приятнно. Спасибо!👍
@ҚазыбекҚойшығара Жыл бұрын
Он чисто авторитетом задавил :)
@АлександрЛисин-е4л Жыл бұрын
Со слезами и соплями я все-таки вывел категории, спасибо)👍
@klapperbein6632 Жыл бұрын
Я сейчас таким же лицом сижу, со слезами и соплями. Пойду умоюсь P.S Спасибо великому stackoverflow за ответы без которых я бы самовыпилися
@АлександрЛисин-е4л Жыл бұрын
@@klapperbein6632 🤣🤣🤣🤣
@ҚазыбекҚойшығара Жыл бұрын
@@klapperbein6632 есть еще чат гпт с помощью которого можно за 2минуты найти и исправить ошибку, иногда конечно куда дольше, но именно эту ошибку с пост айди и категорий айди, он решил с первого запроса
@vimitali76303 жыл бұрын
Спасибо, за урок!
@laravelcreative3 жыл бұрын
Благодарю)!
@armiol Жыл бұрын
Сейчас для подобной связи именно с id не обязательно городить конструкции. Достаточно $table->foreignId('category_id')->constrained('categories'); Laravel сам и индексы создаст и всё, что надо.
@Olegcowboyoleg10 ай бұрын
Не сработала твоя схема. Опять ошибку выдает (Лара10). Вернулся на авторские рельсы.
@mukhtaralmuko22963 жыл бұрын
Здравствуйте! В классе Category при создании метода posts (связь с моделью Post) должен быть внешний ключ category_id. У вас нет внешнего ключа post_id. Это опечатка у Вас?
@laravelcreative3 жыл бұрын
Привет, да опечатка, я вставил его и переключил быстро страницу, в видео это почему-то не отображается. Как раз в тот момент, когда объяснял, что на этом месте должно быть.
@ЕвгенЛандаренко3 жыл бұрын
@@laravelcreative Как Вы сделали это? у меня при рефреше выбивает ошибки при добавлении внешнего ключа ключа
@alexandriv21742 жыл бұрын
извините а где это можете кинуть временную ветку -- я вообще не понял наличия в posts - category_id ведь категории это зависимая таблица а посты основная -- значит в таблице категории должно быть post_id а category_id вообще не должно быть
@haminidzinanusubalieva66222 жыл бұрын
ага, запорол самый важный момент, тема и так не из простых, а тут самое важное неправильно ввел
@timofeygaltsev89332 жыл бұрын
@@alexandriv2174 вы разобрались с этим, я чет не понял, типа все id постов добавлять к категории?)
@kramersaw3 жыл бұрын
ты вообще лучший! спасибо!
@laravelcreative3 жыл бұрын
Благодарю!)
@ДядяФедяремонтквартир2 жыл бұрын
Спасибо большое за разъяснения!
@laravelcreative2 жыл бұрын
Благодарю!)
@spitzer40772 жыл бұрын
Всё получилось. особенно если сразу видишь ошибку с post_id, но все эти return $this->hasMany(Post::class,'category_id','id') весьма неочевидны, точечно понимаешь что к чему, а общая картина в голове не складывается. Было бы очень здорово подключать Mindmap-ы для наглядной демонстрации связей переменных и методов. слишком уж иногда кучу всего надо списывать на фиксированную данность.
@rosts_26 Жыл бұрын
Да, у меня бывает голова кругом едет, в моментах где НУЖНО указывать в множественном числе, а где в ЕДИНИЧНОМ)
@rosts_26 Жыл бұрын
Мой совет (лично мне помогает): старайся подобные моменты в коде комментировать своими словами, ну например: // Метод возвращающий ВСЕ объекты привязанной таблицы по id public function posts() { // Модель (класс) привязанной таблицы; id на который ссылается привязанная таблица; собственный id return $this->hasMany(Post::class, 'category_id', 'id'); }
@spitzer4077 Жыл бұрын
@@rosts_26 это было 9 месяцев тому, давно уже таких нестыковок нет
@Кочевник-р2е2 жыл бұрын
Я заметил ошибку у тебя на 16:04, ты не правильно указал - "fk" - там не post_id a category_id нужно указывать. Но я не понимаю как у тебя сработало)) У меня сразу появилась ошибка, только после того как поправил, сработало.
@sergeyromanov19202 жыл бұрын
Спасибо автору за урок. Непонятно как у автора миграция прошла, с ключом на таблицу, которая еще не создана. По сути сначала надо сделать категории, потом уже посты. Чтобы это стало я переименовал файлы у себя. Возможно из-за того что у меня 9 ларавел, а у нее по строже с этим. Также еще странно почему fk в модели категории указан post_id -- такого даже нигде нет ... - но все работает (баги 8 версии похоже), 9 уже такое не пускает. надо указать category_id.
@fedya99972 жыл бұрын
это не баги. просто (по моему мнению) было несколько дублей, и в разных использовал разны ключи. на 8-й тоже ничего не заводится. люди в комментах подсказали как решить проблему
@pashatv23787 ай бұрын
16:05 пишите category_id а не post_id
@MegaZel3 жыл бұрын
Добрый день. При добавлении строки {$table->foreign('category_id','post_category_fk')->on('categories')->references('id');} выходит ошибка при фреше. (SQLSTATE[HY000]: General error: 1005 Can't create table `first_project`.`posts` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `posts` add constraint `post_category_fk` foreign key (`category_id`) references `categories` (`id`))). И не создается таблица categories. Если эту строку закомментировать, то фреш-мигрейт проходит нормально. В чем может быть причина?
@laravelcreative3 жыл бұрын
Добрый день. Потому что идет ссылка на таблицу категорий, которая скорее всего создается после постов. Поэтому такая ошибка. Слева надо переименовать миграции(поменять числа) так, чтобы таблица категорий была выше.
@MegaZel3 жыл бұрын
@@laravelcreative Спасибо. Все заработало. В видеоуроке у миграции Categories дата стоит позже, чем в Posts, почему в вас нет такой ошибки?
@laravelcreative3 жыл бұрын
Потому что я не включал движок InnoDB, ты наверно используешь опенсервер)?
@karlengels49563 жыл бұрын
@@laravelcreativeааааа, как убрать этот InnoDB
@laravelcreative3 жыл бұрын
это хороший стандарт разработки, лучше не убирать, так как на работе только с ним и работают)
@garaevmvadim2 жыл бұрын
Сделал в точности как в видео, переписал под свои нужды, сделал еще дополнительную страницу по своей нужде, без видео, а просто по своим шаргалкам в тексте Получилось все с 2 раза (просто кое что забыл), уроки просто крайне офигенные и информативные
@НиколайСоловьев-т4ц3 жыл бұрын
16:13 при запуске выдает ошибку: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'posts.post_id' in 'where clause' (SQL: select * from `posts` where `posts`.`post_id` = 1 and `posts`.`post_id` is not null and `posts`.`deleted_at` is null)
@laravelcreative3 жыл бұрын
Ошибка, нет колонки в таблице posts, которая называлась бы post_id. Видимо, что то в миграциях напутал, так как зачем таблице пост иметь колонку post_id)
@СултанБакиров-п6ъ2 жыл бұрын
в модели Post foreignkey напиши 'category_id'
@каучукБутадиеновый2 жыл бұрын
может быть в модели Category в методе hasMany вместо 'post_id' написать 'category_id' ? Т.к. если идти по сути видео, то как раз на моменте 15:50 задевается тема "что же подставлять в foreignKey", и идет ссылка на foreign в миграции, где название колонки - 'categoty_id'. Так же если судить по ошибке запроса ... where `posts`.`post_id` = 1 ... , и учитывая, что мы ищем как раз id категории (то есть categoty_id), получается, что просто нужно заменить 'post_id' на 'category_id'. Но все мы люди, что уж там.
@ЯрославПахомов-ъ7х2 жыл бұрын
Внешние ключи лучше писать в таблице к которой они привязываются, чтобы быть уверенным, что она уже точно создана и просто указать в названии к какой таблице относиться данный внешний ключ. Можно столкнуться с проблемой "sqlstate[hy000]: general error: 1215 cannot add foreign key constraint". Это происходит из-за того, что таблица к которой идёт привязка ещё не существует. В данном случае в классе CreateCategoriesTable после Schema::create'categories', static function (Blueprint $table) { ... }); прописать создание внешнего ключа: Schema::table('posts', static function(Blueprint $table) { $table->foreign('category_id', 'post_category_fk')->references('id')->on('categories'); }); У меня только после этого миграция произошла полностью.
@mrendsub2 жыл бұрын
Я поменял проста имя файла миграции и после того как создана категория пошло посты.
@сергейжиглинский-й8п2 жыл бұрын
@@mrendsub но это не выход если честно, и мне интересно не приведет ли подход Ярика в следующем к другим ошибкам
@maleliuk3 жыл бұрын
migrate:fresh вылилось в ошибку. Создание миграции create_categories_table после create_posts_table говорит что не может найти таблицу. Пришлось переименовать файл миграции так, чтобы таблица категорий создавалась до момента создания таблицы с постами. Некий Table creation order
@laravelcreative3 жыл бұрын
Да:)
@СултанБакиров-п6ъ2 жыл бұрын
еслы бы не ты, я бы потерял кучу времени)) Спасибо!
@evgenn7872 жыл бұрын
А у меня после фреша ларавель убил таблицу с категориями, так же о ней нет записи в таблице с прошедшими миграциями. и заново не хочет накатывать. Фантастика
@repkuc Жыл бұрын
сделал migrate:fresh и табоица posts пропала. и никак не вернуть. в чем проблема ?
@SR-gc8yk Жыл бұрын
Спасибо
@laravelcreative Жыл бұрын
Благодарю!)
@ridddlewrong Жыл бұрын
почему для категорий hasMany a не belongsToMany? В плане логики логично, что если посты принадлежат категории, то категория имеет посты, но в чем систематическая разница между двумя методами? И ещё, чисто по логике belongsToMany тоже мог бы подойти, ведь одна категория тоже принадлежит многим постам.
@kaemey4330 Жыл бұрын
Один к одному, один ко многим, многие ко многим... Так устроена жизнь @Программист-пацанские цитаты
@graceman999 Жыл бұрын
😁
@Olegcowboyoleg10 ай бұрын
Вот думаю: может прерваться на этом видео и всё же посмотреть авторский курс по SQL? ))
@myyyp13 жыл бұрын
1. Правильно ли я понимаю, что на 16:02 вместо 'post_id' должен быть указан 'category_id'? 2. И вроде как laravel сам может определить внешний ключ и указывать foreign_key и local_key не обязательно?
@laravelcreative3 жыл бұрын
1. Нет, в связке только post_id между этими таблицами:) 2. Да, если делать по конвенции ларавел:)
@ВячеславТараканов-б9и2 жыл бұрын
@@laravelcreative Дак а откуда берется рost_id? Вы объясняете, говорите вот, заходим сюда, видим что у нас здесь есть есть форей кей category_id, его сюда и вставляем. Что-то запутался.
@novikovez Жыл бұрын
Уроки супер. Очень хотелось бы понять, как будет происходить вывод Названия категории в цикле когда выводим записи, на 100 записей будет 100 запросов в базу?
@andrewlevitsky6270 Жыл бұрын
Такой вопрос, а почему вы не заходите в DataBase непосредственно в самом phpstorm ? Она ж так удобно справа во вкладке интегрированна )
@evgenn7872 жыл бұрын
Спасибо большое
@eldarkk4566 Жыл бұрын
15:50 это ошибка ?
@dimanamumchak53703 жыл бұрын
Отличный урок.!!!
@laravelcreative3 жыл бұрын
Спасибо!
@SR-gc8yk Жыл бұрын
как я могу связатся с тобой дорогой автор у меня один проблема не могу решить
@laravelcreative Жыл бұрын
laravelcreative@gmail.com
@alexandr99002 жыл бұрын
камент для продвижения
@laravelcreative2 жыл бұрын
Благодарю!)
@Lotpite Жыл бұрын
даааа, с fk явные нестыковки
@Olegcowboyoleg10 ай бұрын
Вопрос ещё вот какой: а если мы просто создаем две таблицы (из миграций), но сами потом руками в MySQL делаем привязку сторонних ключей, будет ли работать? Или надо строго в миграции указать - есть связь таблиц?.
@alexandr-v9 ай бұрын
Работать будет, но если где-то еще через миграции поднять сайт, то надо будет опять через бд править.
@Mr.Capone-3 жыл бұрын
14:30 что значит use HasFactory? а так же use SoftDeletes? на 16:33
@laravelcreative3 жыл бұрын
Это значит используется трейт фабрики, до 8 версии реализация была другая, и в моделях не было этого use. О фабриках рассказывается дальше)
@cshr3225 Жыл бұрын
Это вроде связаны с LEFT JOIN?
@ekaterinasimakova67483 жыл бұрын
Добрый день! почему выдается такая ошибка , когда я проверяю категорию у поста? Trying to get property 'category' of non-object
@laravelcreative3 жыл бұрын
Привет!) Потому что ты пытаешься взять category у объекта, который на самом деле не объект. Если у поста, значит этот пост ноль по каким-то причинам:)
@ekaterinasimakova67483 жыл бұрын
@@laravelcreative я разобралась. Я пыталась найти пост по id , которого у меня нет. У меня посты начинаются с 4, а я пыталась искать как у вас в видео, с 1)))))
@ekaterinasimakova67483 жыл бұрын
@@laravelcreative спасибо большое за этот курс!
@laravelcreative3 жыл бұрын
Ахаха, да бывает, ничего) Спасибо!) Благодарю!)
@BookwormYevgen2 жыл бұрын
При указании внешнего ключа в миграциях вроде как не обязательно указывать имя ключа, и соответственно в отношениях моделей тоже не нужно, достаточно указать класс. Во всяком случае, у меня работает и так. И не очень понятно для чего тут использовать индексы. Индексы же вроде как могут быть полезны, если в базе записей 100500 штук, и то не факт. Хотя если в целом для демонстрации - то супер. И в миграциях можно сразу было бы показать ограничения. Типа каскадного удаления. А вообще - спасибо за контент!
@alexandriv21742 жыл бұрын
снимите пожалуйста видео про CRUD с использованием отношений - а то не понятно как при заполнении поста будет заполнятся category_id
@laravelcreative2 жыл бұрын
Все впереди
@aleksandrpushnin22442 жыл бұрын
Ошибка SQLSTATE[42S22]: Column not found: 1054 Unknown column 'posts.post_id' in 'where clause' как было сказано ниже изменил дату у миграции категорий что бы она было выше чем миграция с постами, не помогло а вот если в модели заменить post_id на category_id то все работает, это как вообще ?))
@sezamiti2 жыл бұрын
Спасибо друг,)
@sharpsss7666 Жыл бұрын
13:15 Undefined variable $category вот решение пацаны: $categories = Category::find(1); $posts = Post::where('category_id',$categories->id)->get(); dd($posts);
@laravelcreative Жыл бұрын
Благодарю!)
@abdulloakramov79412 жыл бұрын
pls help me General error: 1824 Failed to open the referenced table 'categories' (SQL: alter table `posts` add constraint `posts_category_id_foreign` foreig n key (`category_id`) references `categories` (`id`)) такие ошибки постоянно
@imngio66742 жыл бұрын
Ты нашел решение проблемы ?
@joeyjordison85522 жыл бұрын
не создалась таблица категорий в базе
@foster65152 жыл бұрын
как фиксил? Тот же прикол поймал
@СергейПрозоров-ч5к2 жыл бұрын
Не понятно как мы можем связывать посты с категориями через foreignId когда миграция categories ниже миграции posts
@СергейПрозоров-ч5к2 жыл бұрын
Переименовал дату у categories теперь все работает.
@АлексейБогомолов-з3ц2 жыл бұрын
Я тоже на этом моменте застрял. Непонятно как на видео fresh без ошибок прошел?
@alexgud64673 жыл бұрын
в моем проекте как раз-таки будут отношения 1 к 1)) там будет таблица пользователей, и от них будут образованы таблицы: студент, преподаватель, работник, т.е. у каждого пользователя будет своя роль и возможности на сайте. возможно ли отойти от отношения 1 к 1, реализовав как-то по-другому? и спасибо вам за ваши уроки!
@laravelcreative3 жыл бұрын
Если нужно, можно вместо hasMany, использовать hasOne, и таким образом будет реализовать отношение 1 к 1:)
@alexgud64673 жыл бұрын
@@laravelcreative а как вы считаете, нормально ли использовать данное отношение к в случае, что я указал? Ну то есть таблицы «студенты», «преподаватели» и т.д. будут иметь связь с таблицей «пользователи» 1 к 1. Может есть другой способ разделять роли?
@laravelcreative3 жыл бұрын
Мне кажется некорректно) Это получается у тебя может быть много студентов/преподов, но каждый пользователь может иметь одну роль. Получается это один ко многим отношения) Иначе тебе придется множить в таблице ролей много дубляжей "студент" и "преподаватель"
@alexgud64673 жыл бұрын
@@laravelcreative честно говоря немного не понял вас) вы имеете в виду сделать отношение один ко многому от пользователя к таблицам студентов и преподов? Но тогда ссылка на пользователя одного человека может быть привязана к другому человеку.
@alexgud64673 жыл бұрын
@@laravelcreative идея короче была какая: в таблице пользователя хранить ФИО, логин, пароль, что есть у каждого пользователя. А в таблицах студента и препода ссылки на этого пользователя и доп уникальные поля каждой из ролей. (В итоге будет один пользователь- одна роль)
@PumaKuma-vx6yf2 жыл бұрын
Здравствуйте, я использую open server , мой код абсолютно индетичен моему , когда я запускаю миграцию с категориями то у меня выходит такая ошибка Laravel Migrate: "Column Already Exists" 1060 Duplicate Column Name Подскажите пожалуйста, перыл везде и перепробовал все
@myyyp13 жыл бұрын
09:56 "кец"))))))))
@laravelcreative3 жыл бұрын
Благодарю!)
@alexandriv21742 жыл бұрын
извините а вы не сказали обязательно ли прописывать индексы и имя внешнему ключу -- в доках и других примерах этого нет -- а так же не показали пример использования индексов
@laravelcreative2 жыл бұрын
Это стандарт разработки, где-то ему придерживаются, где-то нет. Зависит от компании и команды.
@gattelman58237 ай бұрын
У кого проблема была с кодом 1215 я решил её так, сохранил миграции posts в другой файлик. Создал миграцию сперва для categories все как на видео, а потом создал posts и после чего туда вставил все так же как на видео, миграция прошла успешна. Может я её не "профессионально" сделал, но суть в том, что он дропает таблицы, при создании новых он создает сперва posts а потом уже categories по этому и ошибка, либо же в конце categories просто забить и написать public function down() { Schema::create('categories', function (Blueprint $table) { $table->id(); $table->string('name'); $table->timestamps(); }); } Тоже будет работать
@kyutinen3 жыл бұрын
Здравствуйте! Для миграции Posts (7 мин. 50 сек) делаем настройки [$table->index(...) и $table->foreign(...)] вопрос: В модели Category (15 мин. 50 сек) создаем метод posts(), где для hasMany указываем внешний ключ - все работает Но если в миграции пропустить эти настройки [$table->index(...) и $table->foreign(...)] - метод posts() продолжает работать Для чего явно указываем эти пар-ры [$table->index(...) и $table->foreign(...)] в миграции?
@laravelcreative3 жыл бұрын
Это обеспечивает со стороны БД защиту сохранности данных, чтобы не было дубляжей или данных, которые ссылаются на допустим посты на категорию, которой уже нет. А то, что прописывается в модели - это на уровне php связь, грубо говоря. Поэтому, на реальных проектах, при указании ключей. если будет операция, допустим удаления категории, на которую ссылаются посты, то БД запретит это делать(если конечно нет каких-то прописанные сценариев, как поступать, если такая операция совершается, но это уже другая история)
@kyutinen3 жыл бұрын
@@laravelcreative спасибо!!
@Shico_2 жыл бұрын
Один ко многим на примере двух таблиц - это конечно интересно, но малоинформативно... другое дело, когда у тебя каскад этих таблиц, и каждая следующая подчинена предыдущей. Я понимаю, что такая структура БД сложна, но только так можно привести БД хотя бы к 3 нормальной форме.
@ridddlewrong Жыл бұрын
Вы кажетесь человеком разбирающимся, возможно вы знаете почему для категорий hasMany a не belongsToMany? В плане логики логично, что если посты принадлежат категории, то категория имеет посты, но в чем систематическая разница между двумя методами? И ещё, чисто по логике belongsToMany тоже мог бы подойти, ведь одна категория тоже принадлежит многим постам, тогда тем более почему пишем иное.
@alexandriv21742 жыл бұрын
я вообще не понял наличия в posts - category_id ведь категории это зависимая таблица а посты основная -- значит в таблице категории должно быть post_id а category_id вообще не должно быть
@laravelcreative2 жыл бұрын
Опечатка)
@user-ul3kr9ng5k10 сағат бұрын
Про автобусы не совсем правильно. Конкретно один человек в данный момент может находится только в ОДНОМ автобусе. Правильнее пример, про фотографииотели. Одна и таже фотография может принадлежать многим отелям, справедливо также, как и много отелей могут использовать одну и туже фотография. Это и есть многие ко многим.
@aj-alex2 жыл бұрын
А у меня такая ошибка при миграции (таблица posts): SQLSTATE[HY000]: General error: 3780 Referencing column 'category_id' and referenced column 'id' in foreign key constraint 'post_category_fk' are incompatible. (SQL: alter table `posts` add constraint `post_category_fk` foreign key (`category_id`) references `categories` (`id`)) Роллбекил все до нуля Мигрировал и рефрешил Миграцию категорий переставил до posts Ничего не помогает Все написано верно, как в уроке Если у кого-то была такая же ошибка, просьба поделиться решением. Спасибо!
@aj-alex2 жыл бұрын
Разобрался в общем. Дело в том, что при добавлении колонки category_id в миграции мы указывали формат unsignedInteger: $table->unsignedBigInteger('category_id')->nullable(); А для создания foreign key необходимо соответствие форматов, т.е. он должен быть точно такой же, как у айдишника таблицы категорий, а он создался в формате BIGINT. В общем, поменял формат на unsignedBigInteger и заработало, ы)
@thunderrise82632 жыл бұрын
@@aj-alex здравствуйте а что вы поменяли ? можете подробнее написать
@aj-alex2 жыл бұрын
@@thunderrise8263 unsignedInteger на unsignedBigInteger, т.к. такой формат у айдишника
@МахмудКосимов-з9и2 жыл бұрын
@@aj-alex SQLSTATE[HY000]: General error: 1005 Can't create table `first_project`.`posts` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `posts` add constraint `post_category_fk` foreign key (`category_id`) references `categories` (`id`))
@Floyd86822 жыл бұрын
Может кто сталкивался с подобной ошибкой? SQLSTATE[HY000]: General error: 1005 Can't create table `laravel_project`.`works` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `works` add constraint `work_category_fk` foreign key (`category_id`) references `categories` (`id`))
@Floyd86822 жыл бұрын
Я понял в чем ошибка, из за того что миграция categories создана после миграции works(аналог posts) и когда я запускаю artisan migrate:fresh он доходит до миграции works пытается там установить связь с таблицей categories, но она еще не создана и прерывает дальнейшее выполнение. Если сначала создать categories, а потом works то все работает, но это неудобно, мне нужно переделывать весь проект, может есть какой то способ это исправить? у автора artisan migrate:fresh работает хотя миграция posts у него стоит до categories.
@ramziddinabdumominov6542 жыл бұрын
ya tak zdelal ya sozdal v baze categories u menya toje ne rabotala kogda delal migrate:fresh ya zdelal 1. migrate:fresh 2. sozdal tablitsu v database categories 3. v modele Category ya dal category_id a ne post_id no umenya tak srabotala yesli uvas ne poluchayetsa pobrobuyte tak ne znayu eto pravilniy xod no drugova vixoda ya ne nashol
@world_magics2 жыл бұрын
Illuminate\Database\QueryException SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `posts` add constraint `posts_category_id_foreign` foreign key (`category_id`) references `categories` (`id`) on delete cascade)
@Mr.Capone-2 жыл бұрын
такая же ошибка
@jasonbourne40153 жыл бұрын
Здравствуйте! У вас метод posts() возвращает коллекцию постов (items), привязанных к заданной категории. Сейчас думаю, то-ли я ошибся, то-ли laravel обновил hasMany, поскольку у меня написан точь-в-точь такой же код, как у вас, но выводится не коллекция, а вот это Illuminate\Database\Eloquent\Relations\HasMany {#1022 ▼ #foreignKey: "posts.category_id" #localKey: "id" #query: Illuminate\Database\Eloquent\Builder {#1089 ▶} #parent: App\Models\Category {#1088 ▶} #related: App\Models\Post {#293 ▶} }
@laravelcreative3 жыл бұрын
Возможно тебе в конце надо добавить ->get() ? А если ты хочешь у категории брать посты, то ->posts, если по релейшену, то бишь без скобочек. Скобки - это запрос в бд
@jasonbourne40153 жыл бұрын
Исправил, продолжаю обучение по вашим курсам! Спасибо вам большое за ваши труды и за то, что отвечаете зрителям:)
@laravelcreative3 жыл бұрын
Пожалуйста!) Успехов)!
@georgegeorgin62862 жыл бұрын
[Laravel 9] Для тех у кого не создаётся foreign key в БД (Самое интересное artisan молчит как партизан): Ищем файл /config/database.php Меняем 'engine' => null, на 'engine' => 'InnoDB', Теперь laravel сможет создать ключ. Может вылезти ошибка типа этой: SQLSTATE[HY000]: General error: 1005 Can't create table `first_project`.`posts` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: alter table `posts` add constraint `posts_category_id_foreign` foreign key (`category_id`) references `categories` (`id`)) Нужно либо создать миграцию после миграции с таблицей "categories", либо (как я поступил) создать новую миграцию и в ней добавить index и foreign key: php artisan make:migration add_foreign_key_to_posts_table public function up() { Schema::table('posts', function (Blueprint $table) { $table->index('category_id', 'post_category_idx'); $table->foreign('category_id', 'post_category_fk')->on('categories')->references('id'); }); } public function down() { Schema::table('posts', function (Blueprint $table) { $table->dropForeign('post_category_fk'); $table->dropIndex('post_category_idx'); }); }