I have an issue with laravel.
I have created a database named billing and connection is working fine for all tables. Now I created a new table named as masters. When I'm using this table then it is showing error base table or view masters not found
How can I resolve this issue?
This is usual for beginners. I have a few hints:
You might want to manually check the database, outside of Laravel, to
be sure the table has not been add.
Sometimes, you might just have misspelt the table name.
Did you forget to run the migration? If so, you need to run the
migration to add the table to the database. You can simple use php
artisan migrate on the command line.
If all these don't resolve it, dump you autoload files with composer and rerun your migration. You can use composer dumpautoload and then php artisan migrate:refresh
To create a migration, use the make:migration Artisan command:
php artisan make:migration create_masters_table
The new migration will be placed in your database/migrations directory.
You can use Laravel schema builder to expressively create and modify tables.
To run all of your outstanding migrations, execute the migrate Artisan command: php artisan migrate
Related
after I've manually deleted a table in mysql, I run the command:
php artisan migrate
and I get this:
Nothing to migrate.
it only works the first time, how to re-run the migration in laravel?
Laravel keeps a record of migrations that have been run. You need to go to the migrations table and delete the migration record. Laravel does this so that it knows which migrations have been run so that it doesn't run them again and so that in the case of a rollback, it knows the last batch of migrations which were done.
This may help https://laravel.com/docs/5.6/migrations
Try composer dump-autoload AND php artisan config:cache
if not working also Try php artisan migrate:refresh.
OR Also Delete Migration table in database.
You can simply do: php artisan migrate: fresh to re-migrate your migration and if you have seeder data then you simply do: php artisan migrate: fresh -- seed
If you delete a table by hand, will have to delete the record from "migration" table too. This way when artisan migrate checks if your migration are not in "migration" table will migrate the unregistered ones.
That is the expected behaviour if you manually delete a table, because the previous batch migration job has already been deployed (in migrations table).
IF you want to re-migrate all the database, you can simply do: php artisan migrate:refresh.
IF you want to make sure your database to be clean with your latest changes, you can drop your entire database tables and do php artisan migrate again. Also, you can try php artisan migrate --seed if you have any seeder.
The best thing you can do is drop the table from the database and then rename the migration last number and do
php artisan migrate
This doesn't recreate all the tables.
I have been working using laravel for a long time. I was thinking about this problem. Is it possible to drop a specific table and remove migration file using just a artisan command?
I know there are couple of ways to do these job like Schema::drop('') or creating new migration etc. I am just curious to find such artisan command to do these job.
Any idea will be appreciated.
Thanks.
It's not possible to do this in one command without writing your own artisan command (artisan make:command) - https://laravel.com/docs/5.3/artisan#writing-commands
You can create your custom artisan command.
artisan make:command
I am new laravel programmer, and I have simple question
about setting up database.
Assume that I create all required migrations, models, and eloquent relationships, also configure mysql database in laravel, now in this point, is laravel will create all mysql tables required in server's DB according to migrations, models, and eloquent that I created before?
In other words, do I need to create tables in mysql server as scratch developer do?
To create a migration, use the make:migration Artisan command:
php artisan make:migration create_users_table
To run all of your outstanding migrations, execute the migrate Artisan command:
php artisan migrate
Laravel have many commands from console.
from console,go to your project folder path run php artisan list to see all avaliable commands.
your question asked how to create tables after you created migrations, which is php artisan migrate.
Is
php artisan make:model Test -m
equivalent to
php artisan make:migration create_tests_table --create=tests
?
Does make:model -m create a tests table?
In php artisan make:model Test -m, The -m flag will create a migration file for that model.
In php artisan make:migration create_tests_table --create=tests, the --create flag is the name of the table that will be created.
So yes, the -m option will create a migration file with a name like TIMESTAMP_create_tests_table.php
Update
If you find yourself in a situation when you doubt about commands, you can always run a command like this form your terminal: php artisan help make:model. You'll see an overview with some explenation about the extra options of that specific command.
No they are not equivalent; they are very different. One is creating a model AND also creating a migration while the other is just creating a migration (both migrations include a table called tests). Bear in mind that creating a model and creating a table are not the same thing. From the docs: "The Eloquent ORM included with Laravel provides a beautiful, simple ActiveRecord implementation for working with your database. Each database table has a corresponding "Model" which is used to interact with that table. Models allow you to query for data in your tables, as well as insert new records into the table."
https://laravel.com/docs/5.8/eloquent#defining-models
So I just started playing around with Laravel 5.1. I created a model with migration named "teachers". Then I manually deleted the model file which was Teachers.php which contained the Teachers class. Now when I try to roll back I get the following error:
[Symfony\Component\Debug\Exception\FatalErrorException]
Class 'CreateTeachersTable' not found
I tried composer dump-autoload and php artisan migrate:refresh and php artisan migrate:reset but it keeps on giving above error. I just want to start afresh. How to reset everything?
Ok. So I found the solution. So if you accidentally delete any model file or migrations file without using php artisan migrate:rollback the above command and any migrate command will cause problems. SO what you need to do is, delete all the tables manually from the database. I was using sqlite database and I deleted migrations, users, questions, teachers, password_resets all the tables that were generated by migrate command. Then I ran composer dumpautoload. Then I ran php artisan migrate command again after making changes to the files and everything was back to normal.
So basically deleting migrations table solves the issue.
When you refresh your migrations, Laravel looks at your migrations table and uses the values in there to load the migrations files to rollback.
Since you manually deleted the migration file, it was never removed from your migrations table. You'll have to manually delete the row in that table for the given migration file.
First, check if that class is still referenced somewhere by doing a full search within your project folder, and then if it is not, try running:
php artisan clear-compiled