Last active
December 22, 2019 17:54
-
-
Save moradi-morteza/ab9fd4b9e3338de2b4402fd9b9fe9fb9 to your computer and use it in GitHub Desktop.
[database] #LaravelT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// if you want to connect in certain database use | |
DB::connection('name_of_connection_in_database.config'); | |
DB::connection('mysql')->getPdo(); // return an object pdo | |
// if you not mention name of connection it by default use env connection name like | |
DB::table('posts'); // in env its set by default mysql (mysqli in this file its just a name 'drive' is importent | |
'connections' => [ | |
'sqlite' => [ | |
'driver' => 'sqlite', | |
'url' => env('DATABASE_URL'), | |
'database' => env('DB_DATABASE', database_path('database.sqlite')), | |
'prefix' => '', | |
'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), | |
], | |
'mysql' => [ | |
'driver' => 'mysql', | |
'url' => env('DATABASE_URL'), | |
'host' => env('DB_HOST', '127.0.0.1'), | |
'port' => env('DB_PORT', '3306'), | |
'database' => env('DB_DATABASE', 'forge'), | |
'username' => env('DB_USERNAME', 'forge'), | |
'password' => env('DB_PASSWORD', ''), | |
'unix_socket' => env('DB_SOCKET', ''), | |
'charset' => 'utf8mb4', | |
'collation' => 'utf8mb4_unicode_ci', | |
'prefix' => '', | |
'prefix_indexes' => true, | |
'strict' => true, | |
'engine' => null, | |
'options' => extension_loaded('pdo_mysql') ? array_filter([ | |
PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), | |
]) : [], | |
], | |
'pgsql' => [ | |
'driver' => 'pgsql', | |
'url' => env('DATABASE_URL'), | |
'host' => env('DB_HOST', '127.0.0.1'), | |
'port' => env('DB_PORT', '5432'), | |
'database' => env('DB_DATABASE', 'forge'), | |
'username' => env('DB_USERNAME', 'forge'), | |
'password' => env('DB_PASSWORD', ''), | |
'charset' => 'utf8', | |
'prefix' => '', | |
'prefix_indexes' => true, | |
'schema' => 'public', | |
'sslmode' => 'prefer', | |
], | |
'sqlsrv' => [ | |
'driver' => 'sqlsrv', | |
'url' => env('DATABASE_URL'), | |
'host' => env('DB_HOST', 'localhost'), | |
'port' => env('DB_PORT', '1433'), | |
'database' => env('DB_DATABASE', 'forge'), | |
'username' => env('DB_USERNAME', 'forge'), | |
'password' => env('DB_PASSWORD', ''), | |
'charset' => 'utf8', | |
'prefix' => '', | |
'prefix_indexes' => true, | |
], | |
] | |
//--------------------------------- Query Builder | |
$result = DB::table('posts'); | |
dd($resutl->tosql()); // show its query : select * from posts | |
dd($resutl->get()); // run query and show reuslt | |
$data = DB::table('posts')->get(); // its return a colleciton | |
$data = DB::select('select * from posts'); // its return a array | |
//************* never use qutatino ************** | |
Route::get('post/{id}','PostController@index'); | |
funtion index($id){ | |
$data = DB::select('select * from posts where :id',['id'=>$id]); //true | |
$data = DB::select("select * from posts where :'{$id}'"]); //wrobg | |
} | |
//statement------------------------------------ | |
$comment = // for example create or drop table . you can get this command rom phpmyadmin | |
$result = DB::statement('$command'); //return true or false | |
//listen--------------------------------------- | |
//inside funtion boot in AppServiceProvide.php its get all data of a query run like tim | |
// its better to use this metho in log | |
DB::Listen(function($query){ | |
dd($query->sql,$query->bindings,$query->time);}); | |
//transaction--------------------------------- | |
DB::transaction({ | |
DB::insert(); | |
Db::insert(); | |
// ... | |
}); | |
//or | |
try{ | |
DB::beginTransaction(); | |
// your query | |
DB::commit(); | |
}catch(\Exception $e){ | |
DB::rollBack(); | |
Log::error($e); | |
throw $e; //show error in screen | |
} | |
// another ----------------------------- | |
DB::table('users')->where('age','>',18)->get(); | |
// multi condition | |
DB::table('users')->where([ | |
['age','>',18], | |
['number','>',14] | |
])->get(); | |
//or | |
DB::table('users')->where('age','>',15)->orwhere([ | |
['number','>',14] | |
])->get(); | |
//between | |
DB::table('users')->first(); | |
DB::table('users')->whereBetween('id',[5,9])->get(); //whereNotBetween | |
DB::table('users')->whereIn('id',[5,9])->get(); //whereNotin -> is 5 and 9 or not | |
DB::table('users')->whereNull('id')->get(); // whereNotNull | |
DB::table('users')->orderby('id','desc')->limit(5)->offset(2)->get(); // offsent mean start from index 2 | |
// joins------------------------------------------------ | |
$result=DB::table('users') | |
->join('posts','user.id','=','posts.user_id') | |
->select('posts.*','users.email'); | |
//join = innerjoin , leftJoin , crossJoin |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment