


Detailed introduction to laravel data migration and Eloquent ORM (code example)
Jan 08, 2019 am 11:34 AMThis article brings you a detailed introduction (code example) about laravel data migration and Eloquent ORM. It has certain reference value. Friends in need can refer to it. I hope it will be helpful to you.
The database can be said to be the most commonly used and important part of back-end development. Laravel provides a very practical Eloquent ORM model class to interact with the database simply and intuitively. At the same time, data migration is used to manage the database, which can be shared and edited with the team. For more information on both, please see the documentation below.
The following uses both as an example. The requirement is to record user browsing records. Please do not bring this example into actual projects, this article is only an example. The actual project is recorded according to the requirements, and the storage method is selected.
Create a data table
The first step is of course to create a data table. Using the artisan command can easily create models and migrate data. php artisan make:model Models/BrowseLog -m, the -m parameter also creates a data migration file when creating the model. After executing the above command, two new files, app/Models/BrowseLog.php and database/migrations/{now_date}_create_browse_logs_table.php, were added.
Next edit {now_date}_create_browse_logs_table.php to create the data table
/** ?????*?Run?the?migrations. ?????* ?????*?@return?void ?????*/ ????public?function?up() ????{ ????????Schema::create('browse_logs',?function?(Blueprint?$table)?{ ????????????$table->increments('id'); ????????????$table->ipAddress('ip_addr')->comment('ip?地址'); ????????????$table->string('request_url',?20)->comment('請求?url'); ????????????$table->char('city_name',?10)->comment('根據(jù)?ip?獲取城市名稱'); ????????????$table->timestamps(); ????????}); ????????DB::statement("ALTER?TABLE?`browse_logs`?comment'瀏覽記錄表'");?//?表注釋 ????}
The code is as above. After the editing is completed, execute the command php artisan migrate to create all data tables that have not been migrated. As follows
Personally, laravel’s default data type is questionable. For example, the data format of ipAddress() is varchar(45). In fact, you can use ip2long to convert it to int for storage. timestamps() can also use timestamps for storage. Of course, laravel also provides accessors & modifiers for easy maintenance. You can choose by yourself in the actual project.
Define middleware
Define a global middleware that will be executed on every request. Execute php artisan make:middleware BrowseLog to create the app/Http/Middleware/BrowseLog.php file.Add the created middleware to app/Http/Kernel.php as follows
Record data
Finally, in the middleware, just record the data to the database. The code is as follows/** ?????*?Handle?an?incoming?request. ?????* ?????*?@param??\Illuminate\Http\Request??$request ?????*?@param??\Closure??$next ?????*?@return?mixed ?????*/ ????public?function?handle($request,?Closure?$next) ????{ ????????$log?=?new?\App\Models\BrowseLog(); ????????$log->ip_addr?=?$request->getClientIp(); ????????$log->request_url?=?$request->path(); ????????$log->city_name?=?get_city_by_ip(); ????????$log->save(); ????????return?$next($request); ????}After accessing several links, go to the database to check
The above is the detailed content of Detailed introduction to laravel data migration and Eloquent ORM (code example). For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undress AI Tool
Undress images for free

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

std::chrono is used in C to process time, including obtaining the current time, measuring execution time, operation time point and duration, and formatting analysis time. 1. Use std::chrono::system_clock::now() to obtain the current time, which can be converted into a readable string, but the system clock may not be monotonous; 2. Use std::chrono::steady_clock to measure the execution time to ensure monotony, and convert it into milliseconds, seconds and other units through duration_cast; 3. Time point (time_point) and duration (duration) can be interoperable, but attention should be paid to unit compatibility and clock epoch (epoch)

ToaccessenvironmentvariablesinPHP,usegetenv()orthe$_ENVsuperglobal.1.getenv('VAR_NAME')retrievesaspecificvariable.2.$_ENV['VAR_NAME']accessesvariablesifvariables_orderinphp.iniincludes"E".SetvariablesviaCLIwithVAR=valuephpscript.php,inApach

PHPhasthreecommentstyles://,#forsingle-lineand/.../formulti-line.Usecommentstoexplainwhycodeexists,notwhatitdoes.MarkTODO/FIXMEitemsanddisablecodetemporarilyduringdebugging.Avoidover-commentingsimplelogic.Writeconcise,grammaticallycorrectcommentsandu

LaravelSanctum is suitable for simple, lightweight API certifications such as SPA or mobile applications, while Passport is suitable for scenarios where full OAuth2 functionality is required. 1. Sanctum provides token-based authentication, suitable for first-party clients; 2. Passport supports complex processes such as authorization codes and client credentials, suitable for third-party developers to access; 3. Sanctum installation and configuration are simpler and maintenance costs are low; 4. Passport functions are comprehensive but configuration is complex, suitable for platforms that require fine permission control. When selecting, you should determine whether the OAuth2 feature is required based on the project requirements.

In PHP, you can use a variety of methods to determine whether a string starts with a specific string: 1. Use strncmp() to compare the first n characters. If 0 is returned, the beginning matches and is not case sensitive; 2. Use strpos() to check whether the substring position is 0, which is case sensitive. Stripos() can be used instead to achieve case insensitive; 3. You can encapsulate the startsWith() or str_starts_with() function to improve reusability; in addition, it is necessary to note that empty strings return true by default, encoding compatibility and performance differences, strncmp() is usually more efficient.

When using PHP preprocessing statements to execute queries with IN clauses, 1. Dynamically generate placeholders according to the length of the array; 2. When using PDO, you can directly pass in the array, and use array_values to ensure continuous indexes; 3. When using mysqli, you need to construct type strings and bind parameters, pay attention to the way of expanding the array and version compatibility; 4. Avoid splicing SQL, processing empty arrays, and ensuring data types match. The specific method is: first use implode and array_fill to generate placeholders, and then bind parameters according to the extended characteristics to safely execute IN queries.

There are three key ways to avoid the "undefinedindex" error: First, use isset() to check whether the array key exists and ensure that the value is not null, which is suitable for most common scenarios; second, use array_key_exists() to only determine whether the key exists, which is suitable for situations where the key does not exist and the value is null; finally, use the empty merge operator?? (PHP7) to concisely set the default value, which is recommended for modern PHP projects, and pay attention to the spelling of form field names, use extract() carefully, and check the array is not empty before traversing to further avoid risks.

The key steps to install PHP on Windows include: 1. Download the appropriate PHP version and decompress it. It is recommended to use ThreadSafe version with Apache or NonThreadSafe version with Nginx; 2. Configure the php.ini file and rename php.ini-development or php.ini-production to php.ini; 3. Add the PHP path to the system environment variable Path for command line use; 4. Test whether PHP is installed successfully, execute php-v through the command line and run the built-in server to test the parsing capabilities; 5. If you use Apache, you need to configure P in httpd.conf
