Wednesday, December 16, 2015

Yii2 DB query using model class

echo $query->createCommand()->sql;
$query->createCommand()->getRawSql()


Add Record:
$model = new Products();
$model->name = 'Light';
$model->color = 'White';
$model->created_date = date('Y-m-d H:m:s');
$model->save();   // Return TRUE or FALSE.
echo $model->id; // Return id for created record.

Update Record:
$model = Products::findOne($id);
$model->name = 'Light';
$model->color = 'White';
$model->created_date = date('Y-m-d H:m:s');
$model->save();   // Return TRUE or FALSE.

Delete Record:
$model = Products::findOne($id);
$model->delete();   // Return TRUE or FALSE;

Products::deleteAll(['color'=>'red']);  // Delete multiple record with condition.

Select Record:
UserEvents::find()->select(['user_events.id', "CONCAT(year, '', month) AS yearmonth", 'location', 'budget_id', 'year', 'month', 'day', 'no_of_guests', 'event_id'])->where(['user_id'=>$bride_id])->andWhere('id != '.$id)->andWhere('"yearmonth" >= :year_month', [':year_month'=>$year_month])->joinWith('budget_master')->joinWith('guest_master')->joinWith('event_type_master')->asArray()->all();

Tuesday, October 27, 2015

Yii2 - Check a record exist

To check a record exist on table use below code,

$exist = User::find()->where(['email' => $email])->exists();

if($exist)
     echo 'Exist.';
else
     echo 'Not exist.';

Wednesday, July 22, 2015

Yii2 Notes

Entry script:
Usually index.php on web folder is entry script. We can change this name. All request to Yii site are executing via Entry Script only. So we can declare here any Constant, Aliases etc.. which are going to use via over all site.

Applications
Applications are objects that govern the overall structure and lifecycle of Yii application systems. Each Yii application system contains a single application object which is created in the entry script and is globally accessible through the expression \Yii::$app.

Application Components
They are the components OR libraries used by Application. Ex: URL Manager.

Aliases (@):
When we not know exact path or URL we can use @ symbol in starting of same, then Yii will search the path or URL through the site. We can also add aliases by manually.

@web will find web directory path of Yii.

Yii::setAlias('@foo', '/path/to/foo'); // Set aliases
Yii::getAlias('@foo/test/file.php');  // Get aliases: /path/to/foo/test/file.php


Class Auto loading:
Yii using PHP's auto loading concept. That is a class will auto load necessary classes when it trying to use them, so we not need to include the necessary class on top. The auto loader is installed when you include the Yii.php file. For this purpose we are using namespace at the top of classes, because namespace having the roots to all classes.

yii\base\Model taking care of form elements and
yii\db\ActiveRecord taking care of database activities.

The expression Yii::$app represents the application instance, which is a globally accessible singleton

Controllers
After Application initiate process Controller will analyze incoming request data, pass them to models, inject model results into views.

Models
Its making control between code and database. Model representing business data, rules and logic.
Attribute: Models represent business data(user inputs and model variables) in terms of attributes.
Attribute Labels: Label of inputs. Ex usage: $model->getAttributeLabel('name'); You may override label of inputs.
Massive Assignment: Assigning post values return back to form when validation fails.
Safe Attributes: Massive assignment only applies to the so-called safe attributes.
Unsafe Attributes: Will used on you may want to validate an attribute but do not want to mark it safe.
Data Exporting: Models often need to be exported in different formats. For example, you may want to convert a collection of models into JSON or Excel format.
Fields: By default, field names are equivalent to attribute names. But you can change it.

Models are the central places to represent business data, rules and logic. They often need to be reused in different places. In a well-designed application, models are usually much fatter than controllers.

Scenarios
A model may be used in different scenarios. For example, a User model may be used to collect user login inputs, but it may also be used for the user registration purpose. In different scenarios, a model may use different business rules and logic. For example, the email attribute may be required during user registration, but not so during user login.








Friday, June 26, 2015

Started to learn Yii 2

I am learning Yii 2 for last 5 days, but I still not get the point. I totally got confused and losing energy, time, confident etc.

I got followings:
1. After my long research I got the point of using "Composer". And learned how to install and use it.
2. Understand url routing.(Like naming controller and functions).
3. Under stand MVC structure which Yii using(Because I already used CodeIgniter).
4. Under stand DB Active Record Queries.

I not got followings:
1. The way of OOPS concept they using is totally making me unhappy. I know oops as middle level. But here they randomly calling function, properties using object OR class. In more case I can't find the function which they called. In that cases I decide that may be default or core.
2. And mainly I am not satisfied with the documents they given(http://www.yiiframework.com/doc-2.0/guide-README.html). They just explained the concept blindly, there is no fully run-able example codes. Just gave the syntax.
3. I cannot understand and implement the login authentication they explained.

As of now I am in 20% only, still I am trying. I hope will get the point in next week. I will post that exp on next week...

Friday, April 10, 2015

Assign value or array in PHP variable to Javascript variable.

<?php
$name = 'Einstein';
$categories = array('1'=>'Red', '2'=>'Green', '3'=>'Blue');
?>

<script type="text/javascript">
// Assign a PHP value/string to JS variable.
var name = '<?php echo $name; ?>';
console.log(name);                       // Einstein

// Assign a PHP array to JS variable.
var categories = JSON.parse('<?php echo json_encode($categories); ?>');
console.log(categories[3]);           // Blue
</script>

Thursday, July 24, 2014

Simple, best and standard way to make Thumbnail Images in PHP using Imagick

There is lot of way and plugins available to make thumbnail images in PHP. But that was the problem, because we are confused about which was the best one. After I research on these, I found using Imagick is the best one(Its only on my point of view.).

Imagick
Its an PHP extension to create or modify images. Imagick = Image + Magick. In old periods peoples wrote Magic as Magick. To install these run following command on your linux terminal.

pecl install imagick

After installing Imagick using above command, add “extension=imagick.so“ at the end on php.ini file which is located on /etc/php5/apache2/php.ini and restart the apache.

Example
<?php
$img_old_path = 'images/sun.jpg';     // Input image.
$img_new_path = 'images/thumbnail/sun.jpg';      // Output thumbnail image.

$img = new Imagick($img_old_path);

// Orientation operation start.
// If you remove this orientation block, there will no issue on generating thumbnail. But image may rotated if it has high difference in height and width.
$orientation = $img->getImageOrientation();
switch($orientation) {
    case imagick::ORIENTATION_BOTTOMRIGHT: 
        $img->rotateimage("#000", 180); // rotate 180 degrees.
    break;

    case imagick::ORIENTATION_RIGHTTOP:
        $img->rotateimage("#000", 90); // rotate 90 degrees CW.
    break;

    case imagick::ORIENTATION_LEFTBOTTOM: 
        $img->rotateimage("#000", -90); // rotate 90 degrees CCW.
    break;
}
$img->setImageOrientation(imagick::ORIENTATION_TOPLEFT);
// Orientation operation end.

$img->thumbnailImage(200 , 200, TRUE);
/* Max width and max height with best fit. Will return boolean;
This is the best method to make thumbnail. Action behind the scene is...
1. If given image width is larger than heigh then make thumbnail width as 200(here) and fix height according to that.

2. Else if image hight is larger than width then make thumbnail height as 200 and fix width according to that.*/

$img->writeImage($img_new_path); // Write the generated thumbnail. Will return boolean.
?>

References

Friday, July 18, 2014

Abstract class in PHP

Concept
Abstract class cannot be instantiated, that is we can not create a object. Any class which has at-least one abstract function should be  declared as abstract. These abstract functions are only can declare, can not define here. But these are must be defined in classes which are inherited this abstract class. We can declare this abstract function as any type(public, protected or private) in abstract class, but it should be same or less restricted type in inherited class(For example declared as protected may had public in derived class). And number of arguments also should be same(May had additional optional argument in derived class.).

Clear Example
<?php
abstract class A                          // Abstract class.
{
abstract protected function fun1();   // Declaring abstract function as protected.
abstract public function fun2($i);  // Declaring abstract function as public with one argument.
abstract public function fun3($i,$j); // Declaring abstract function as public with two arguments.

public function fun4()  // Declaring and defining a normal function in abstract class.
{
echo 'fun4 definition from class A(abstract class).<br />';
}
}

class B extends A
{
public function fun1()  // Definiion for a abstract function.
{
echo 'fun1 definition from class B.<br />';
}

public function fun2($i)  // Definiion for a abstract function with exact no.of arugument.
{
echo 'fun2 definition from class B.<br />';
}

public function fun3($i,$j,$k=30)  // Definiion for a abstract function with optional arugument.
{
echo 'fun3 definition from class B.<br />';
}
}

$b=new B();
echo $b->fun1();
echo $b->fun2(10);
echo $b->fun3(10,20);
echo $b->fun4();
?>

Abstract vs Interface
1. Abstract is a class but interface not. So memory allocation for abstract is high.
2. Abstract class can had normal functions and variables. But interface cannot.
3. Functions on interface must be public but in abstract class may had anything.
4. A class can inherit only one abstract class but can inherit more than one interface.

Learn JavaScript - String and its methods - 16

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>String and it's methods - JS...