Tuesday, July 11, 2017

Laravel 5: Get Controller Name in View | Route Details | Controller & Action Name | Route Parameters

You can create a view composer that injects those variables into your view file. In "app/Providers/AppServiceProvider.php" add something like this:

public function boot()
{
    //app('view')->composer("folder.specific_view_name", function ($view) {
    app('view')->composer("*", function ($view) {
        $action = app("request")->route()->getAction();

        $controller = class_basename($action["controller"]);

        list($controller_name, $action_name) = explode("@", $controller);

        $view->with(compact("controller_name", "action_name"));
    });
}

You also can parameters from current request as below:

app('request')->route()->parameters()

Array
(
    [middleware] => web
    [as] => folder.view_name
    [uses] => App\Http\Controllers\UserController@show
    [controller] => App\Http\Controllers\UserController@show
    [namespace] => App\Http\Controllers
    [prefix] => 
    [where] => Array
        (
        )


)


Thursday, July 6, 2017

Laravel 5: Logging All DB Query | Log Queries | Listen Query Events | Query Logging | Sql Logging | Log SQL | DB Connection Class | Laravel Database Connection | Laravel DB Connection Query Run Method

Laravel 5: Logging All DB Query | Log Queries | Listen Query Events | Query Logging | Sql Logging | Log SQL | DB Connection Class | Laravel Database Connection | Laravel DB Connection Query Run Method.

Logging query in Laravel is easy. You can then register event listener for DB. At first you need to create an service provider in directory ("project/app/Providers" ) named QueryLogProvider with following contents:


<?php
namespace App\Providers;

use Monolog\Logger;
use Illuminate\Support\Facades\DB;
use Monolog\Handler\StreamHandler;
use Illuminate\Support\ServiceProvider;

class QueryLogProvider extends ServiceProvider
{
    public function register()
    {
        DB::listen(function ($query) {
            $logFile = storage_path('logs/query-log-'.date("Y-m-d").'.log');
            $stream = new Logger('log');
            $stream->pushHandler(new StreamHandler($logFile));
            $bindings = $query->bindings;
            $time = $query->time;
            $stream->info($query->sql, compact('bindings', 'time'));
        });
    }
}

You are done with creating provider. Now you have to register in file "project/config/app.php" in section 


'providers' => [
    .....,
    App\Providers\QueryLogProvider::class
],

All your queries will be stored on the location "project/storage/logs" with prefix file name "query-log".

But you can do some wired things, editing source code. To do so first need to open your connection class:

Illuminate\Database\Connection

and navigate to function:

protected function run($query, $bindings, Closure $callback)

actually all query in Laravel passed through this method.

So you can do whatever you wish to do here.

Tuesday, July 4, 2017

VBScript: Task Scheduler in Windows | Task On Startup

Create your own VBScript which will execute as scheduled time or at logon time. There are different settings which will give you more control on customization of schedule task.

Then open "Task Scheduler" and follow below screenshots:


Then click "Action" and "Create Task..."


Enter your task name


Click "Trigger" and modify settings


Click "Action" and modify settings


In "Program/script" field put:
C:\Windows\System32\CScript.exe

And In "Add arguments" field put:
//Nologo //B C:\tmp\MyStartup.vbs

This will run the VBScript every 1 hour.

Now if you want to run this script when an user login then you have to change the action to "At log on", so do following as screenshot below:



Monday, July 3, 2017

Laravel 5: Get Service Instance In Controller Dynamically | Get Service Instance In Service Dynamically

The Laravel service container is a powerful tool for managing class dependencies. Dependency injection is a fancy word that essentially means this: class dependencies are "injected" into the class via the constructor.

There are several ways to resolve something out of the container. First, you may use the make method as below example:

$service = app()->make("App\\Service\\EmployeeService");

So it makes life easier.

Sunday, July 2, 2017

PHPStorm: Open Project Using Command Line Using VBScript | Open Directory Using Command Line Using VBScript

PhpStorm helps opening a project using command line. You can open specific file with specific line. Below is a code snippet (Written in VBScript) to open a project directory using command line as well as VBScript.

Set WshShell = CreateObject("WScript.Shell" )

WshShell.Run """C:\..\bin\PhpStorm.exe"" ""C:\xamp\project" "", 1

And in MAC you can use below command:
/Applications/../phpstorm ~/PhpS..jects/unt..5


You also can open a file of the same project using below command:

PhpStorm.exe C:\project_dir --line 3 C:\project_dir\numbers.js

Friday, June 30, 2017

Laravel 5: Change Default Database connection Dynamically | Change database name of connection on the fly | How to change default database connection in controller | Multiple DB Connections | Specifying DB connection information dynamically instead of config key | How to Use Multiple Database Connections in Laravel Application

use Illuminate\Config\Repository;

public function __construct(Repository $config) {}


So now you can $config from the above reference.

Below is a sample usage of change database name:

$config->set("database.connections.mysql.database", "test");

or

app()->config->set("database.connections.mysql.database", "test");

You can use this functionality in middle-ware.

If your app already connected then you have to disconnect it before make new connection available.

Below follow steps to disconnect connection:

$dm = app("Illuminate\\Database\\DatabaseManager");

$dm->disconnect();

Laravel 5: How to set and get config variable in Controller | Use of Application Config in Controller

use Illuminate\Contracts\Foundation\Application;
use Illuminate\Config\Repository;

public function __construct(Application $app, Repository $config) {}

So now you can $app and $config from the above reference.

Below is a sample usage of $config:

$config->set("database.connections.mysql.database", "test");