Skip to content

Instantly share code, notes, and snippets.

@moradi-morteza
Last active December 22, 2019 17:54
Show Gist options
  • Save moradi-morteza/ab9fd4b9e3338de2b4402fd9b9fe9fb9 to your computer and use it in GitHub Desktop.
Save moradi-morteza/ab9fd4b9e3338de2b4402fd9b9fe9fb9 to your computer and use it in GitHub Desktop.
[database] #LaravelT
// 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