is it a brand new project? if so, there should be (well it doesn't have to be, but that is the purpose of it) a migration file for every database table. so as you create and modify database tables in the project's lifecycle, everything is tracked in migration file(s). so after first deploy to a new environment, every migration is ran and the DB structure is created step by step.
if it is a ongoing project with already existing database, the easiest way really is just to dump the database (your first option) and use it in the first migration, but i personally prefer (have done both in the past) to just write a migration for all existing tables. either manually or with a help from external tool. not sure RN, but i think i used this package: https://github.com/kitloong/laravel-migrations-generator which basically connects to a DB and writes migrations for you. i had to tweak it a bit, but it was great help.
i would choose that way. the syntax is sure different from SQL, but i think a developer which can read SQL would have no problem reading the migration file and know what is what without any trouble.
this was about the structure, there is a big question about data, but i would rather not dig into that. if not needed, because it complicates things a bit.