Laravel MySQL PHP

Mysql General Error 1364 Field Doesn’t Have Default Value

Hi All,

Since I’ve updated my homestead to 0.3.0 and mysql version is upgrade to 5.7.4. From that moment, my old projects has been started to throw problems which is Mysql General Error 1364 Field doesn’t have default value.

Even migrations was not working, there has to be a problem. After my first research I’ve found a solution for Php Laravel Projects there is a “strict” parameter for mysql connection, when I set it true migrations worked well.. But, in some cases, I let the mysql to set default value such as integer fields are sets to ‘0’ and varchar fields are empty strings etc.. I need to use default values as before..

PHP Version Control

Bitbucket Repository with Composer

Hi all,

In this article , you will find a tutorial about , how to use github or bitbucket repositories with composer.

Create Your Repository

Most important thing in this step, we will use the repository name in composer.json. I used “blog/tutorial” as a package name. I prefer to use bitbucket and at the below code copied from bitbucket repository page, following commands will init git repository to your local folder.

mkdir /path/to/your/project
cd /path/to/your/project
git init
git remote add origin [email protected]:yourname/blog-tutorial.git

Create Composer.json

Now, i defined a composer properties like , package name , description , authors , requirements etc.. For more information about composer.json please check Composer Basic Usage

Note: When you finished to edit “composer.json”  , dont forget to run

composer validate
    "name": "mtigdemir/blog-tutorial",
    "description": "Muharrem Tigdemir Blog Tutorial Package",
    "authors": [
            "name": "Muharrem Tığdemir",
            "email": "[email protected]"
    "require": {
        "php": ">=5.4",
    "require-dev": {
        "phpunit/phpunit": "~4.6"
    "autoload": {
        "psr-4": {
            "Mtigdemir\\Blog\\": "src/"

As you can see, I’ve defined autoload psr-4 property with namespace “Mtigdemir\\Blog\\”

!IMPORTANT! PSR-0 is deprecated , and PSR-4 standarts show us where to place files that will be autoloaded according to the specification. For more information about PSR-4 please check PHP Framework Interop Group

<?php namespace Mtigdemir\Blog;
// File must be under src directory
class User
	private $username; 
	private $email; 

	public function __constructor($username , $email){
		$this->username = $username;
		$this->email = $email;

	public function getEmail(){
		return $this->email;

	public function getUsername(){
		return $this->username;

Let’s create a User.class in src/ directory with Mtigdemir\Blog namespace. Your package is ready to use with User class lets push it !

It’s time to include our package into the project

First of all, we have to include our repository to new project at the below composer.json definition is my new project and I included “[email protected]:mtigdemir/blog-tutorial.git” to my repositories.

Note : if you are using private repository. You have add your ssh-key to bitbucket!

   "name" : "mtigdemir/blog-tutorial-project",
   "description" : "Blog Tutorial Project",
   "repositories": [
     "type": "vcs",
     "url":  "[email protected]:mtigdemir/blog-tutorial.git"
   "require": {
       "php": ">=5.4",
composer search mtigdemir

This composer command will find “mtigdemir” packages including my private repository , as a result composer will find our package name and description if everything is cool you will see this kind of result in command line about your package definition: “mtigdemir/blog-tutorial Blog tutorial Package”

composer info mtigdemir/blog-tutorial

What about version ! I didn’t release any version , in that case if you pushed develop or master branch your requirement version will change that’s why composer info is very useful. My package version is “dev-master”

name     : mtigdemir/blog-tutorial                       
descrip. : Blog tutorial Package
keywords : 
versions : dev-master
type     : library
source   : [git] [email protected]:mtigdemir/blog-tutorial.git f37affd9a2f1500a4ff956aa727304ce66af951b
dist     : []  
names    : mtigdemir/blog-tutorial

Bumin\Psp\Account\ => src/

php >=5.4

requires (dev)
phpunit/phpunit ~4.6

Now , you can add your package like at the below or add package to composer.json and update it !

composer require mtigdemir/blog-tutorial:dev-master

Finally, I’m able to use my class in project — Yea only User Class user.php :((

Your package will be under vendor/ directory like other packages from

require "vendor/autoload.php";

$user = new \Mtigdemir\Blog\User("muharrem" , "[email protected]");

echo $user->getUserName().'__'.$user->getEmail();

I’m able to use my User Class with namespace ,

I want to thank to my team-mate Aykut Aras for share with me all about this know-how..

Muharrem Tığdemir

Laravel MySQL PHP

Laravel Eloquent Model Events

Hi All ,

In this post , I’ll talk about Eloquent Model Events.

Looks Like Database Trigger Isn’t it?

When I read the documentation , I said “Mysql already doing this so..”. Personally, still I prefer to use Mysql Triggers for database operations. It’s more faster and guaranteed. But day by day NoSQL solutions or Hybrid database solutions like using MongoDB and Mysql together becoming as a popular solutions.  Also each NoSQL database is different, but MongoDB doesn’t support  actually stored procedures or triggers. In that case , we need to handle this kind of situations.

If you are interested in MySQL-NoSQL Hybrid Solution with Laravel. You can check this package by Jessenger.

For More

Laravel site has a simple usage example for Eloquent Model Events for “Validation”. In real projects , we have to validate every input , when model “updating” and “creating” its very important. So, Model Events is amazingly useful for this job. You can check the JeffreyWay Model Validation package from github.  This package supports model based validation rules.

Generaly, we need to delete photos , avatars , attachments from FTP too or Logging Model actions We can add more usages examples depends on situation. Let’s see abilities of Model Events.


PDFlib – TET PHP Install and Example


I have Xampp Server on Windows your paths can be change depends on your server application.

Let’s download Latest Pdflib from this url.

  • If you are using Linux , OS X , Oracle , IBM etc.. visit the page and download latest.
  • Extract files..
  • You’ll see under this path ‘/bind/php/’   php-530_VS9 , php-540_VS9 , php-550_VS11  Pdflib support 5.3+
  • Select the correct php version library with your own. If you dont know
   echo phpinfo();
  •  Copy php_pdlib.dll to under your “php/ext”
  •  Open your php.ini your file and add “extension=php_pdlib.dll”
  • Restart your Apache and try phpinfo again..
  • You’ll see picture at the below
Pdflib install info
Pdflib Install Info

You can read this tutorial from original web site..

You’ll be able to add someting to exist’s pdf file draw images etc.. This is amazingly easy to use library..

What About TET ??

I’ve only used this library with Php but , this library supports all most everything 😀

Download Tet from this url which OS are you using it.. 

This won’t be the similar with PdfLib because there is no example in TET.

When you setup  it. Check your User folder  “C:\Users\PC\Documents\PDFlib\TET(Version)\bind\php”

  • From Now you can follow the similar steps with installing PdfLib
  • When you completed check your phpinfo() you’ll see this extesnsion at the below
Tet install
Tet install Info
$p = new PDFlib();
$tet = new TET();




Muharrem Tığdemir


Google AppEngine Java Channel API Basic Example

Hi all ,

Currently  i’m working on Google App Engine with Channel API. I just needed basic socket example. I’ll show you how to create basic example.


  1. Setup Eclipse Google App Engine Plugin
  2. Send Message From Servlet to Client
  3. Client Listener
  4. Deploy..
Gearman PHP

Laravel4 Queue with Gearman

Hi all , this article about Laravel4 Queue component.

Before,  start reading this article please check these pages and get basic knowledge about it.

  1. Laravel 4.2 Queue Documentation
  2. What’s main idea of Queue system and why do we need this?
  3. What is Gearman Job Server?

If you are interested in Laravel 4 Queue component , you’ll have good options for Job Server like;

These are supported in Laravel Default Framework..

What should I pay attention while choosing  Job Server Platform?

Laravel PHP

Laravel 4 Paylaşımlı Host Komut (Shared Host Command)

Merhaba Arkadaşlar ,

Laravel projenizi henüz paylaşımlı host’a yüklemediyseniz. Laravel Paylaşımlı Host’ta yayınlamak. ile ilgili yazımı okuyabilirsiniz.

Projemiz’i teknik olarak internete açtık. Ancak , şimdi içerikleri nasıl dolduracağız. Migration’ları seed’leri boşuna mı yazdık? ‘Hayat “http://localhost” da çok güzeldi.’ peki ya şimdi..

Bana göre Laravel’i üst seviyelere taşıyan ve önüzmüzdeki yıllarda daha popüler olmasını sağlayacak özellikleri  : Composer , Bundle , Eloquent , Migratin , Seed vs.. bunlar başta olmak üzere geliştirilen opensource kütüphaneleri entegre çalışması. Eloquent hariç tüm bu özellikler bildiğiniz üzere konsol bağlantısı gerektiriyor veya tutorial’dan öyle gördük.

VPS’imiz , SSH’ımız yok ölelim mi?

Tabi ki hayır.. Ozaman ‘Talk is easy show me the code!’ diyosunuz.. 😀

Laravel Linux

Laravel 4 Paylaşımlı Host Yayın(Shared Host Publish)

Merhaba Arkadaşlar ,

Bugün itibari ile ilk Laravel 4 projemi yayına hazırladım. Her proje için VPS ve SSH bağlantısı malum biraz lüks olabiliyor. Aşağıdaki adımları takip ederseniz. Projenizi paylaşımlı hostta ssh bağlantısı olmadan yayınlayabilirsiniz.

Öncelikle bu konuda birçok yöntem olduğunu belirteyim. Ben güvenli ve basit olanı tercih ediyorum. Bu işlem Rewreite Rule kullanılarak da elbette yapılabilir. Ancak bütün kodlarımızı sere serpe ziyaretçilere sunmak istemiyoruz..

Laravel PHP

Laravel 4 Migration Seed Faker Database

Merhaba Arkadaşlar ,

Bu yazımda Laravel 4  de proje şablonu oluşturuken kullanabileceğimiz , Migration , Seed ve Faker araçlarını birarada kullanarak yeni bir projenin temellerini oluşturacağım.

Henüz Laravel 4 kurulumunu yapmadıysanız. Hızlı kurulumu için bu yazıyı okuyun.

Laravel 4 ile ilgili basit ipuçları ve Faker hakkında ayrıntılı bilgi için bu yazıyı okuyabilirsiniz.


Migration aracının bize sağlıdığı en iyi özellik şema tasarımının kolayca oluşturulabilmesi , ORM yapasına uygun kolonları eklemesi timestamp( ‘created_at’ , ‘updated_at’) verileri ve proje içinde çalışırken artık bizi database’e bakma yükünden kurtarması. Migration dosyaları ‘app/database/migrations’ klasörü altında bulunuyor.

  • <?php
    use Illuminate\Database\Migrations\Migration;
    use Illuminate\Database\Schema\Blueprint;
    class CreateProduct extends Migration {
         * Run the migrations.
         * @return void
        public function up() {
            Schema::create('product', function(Blueprint $table) {
         * Reverse the migrations.
         * @return void
        public function down() {

    MySQL deki bütün veri tiplerini ve özelliklerini şema oluştururken kullanmak mümkün integer , bigint , text ,enum vs.. Ayrıntılı bilgi için buraya bakabilirsiniz.

  • php artisan migrate

    Yukarıdaki komut ile migrations klasörü altındaki dosyaları okuyrak database de tablolar ve alanları oluşturduk.

Seed ve Faker

Migration ile şemamızı oluşturduk ve database hazır ama boş 😀 Bize gerçek olmayan veriler(Dummy Data) lazım. Seed Class’ı bu konuda yardımımıza koşuyor. Buna ek olarak rastgele ve anlamlı yazı , resim , websitesi , email vs. ihtiyazcınız olabiliecek birçok veri tipini de ‘Faker’ ile üretebilirsiniz.

Faker kurulumu , desteklediği veriler için buraya bakınız.

  • Kullanım kolayladığı sağladığı için ben öncelikle modelin oluşturulması gerektiğini düşünüyorum. İsterseniz model olmadan da insert methodu ile database’i doldurabilirsiniz.
  • <?php
     * An Eloquent Model: 'Products'
     * @property integer $pid
     * @property string $title
     * @property string $description
     * @property \Carbon\Carbon $created_at
     * @property \Carbon\Carbon $updated_at
    class Product extends \Eloquent {
        protected $table = 'product';
        protected $fillable = [];

    Yukarıdaki kodları ‘app/models’ altına Product ismi ile kaydedebilirsiniz.

  • <?php
    // Composer: "fzaninotto/faker": "v1.3.0"
    use Faker\Factory as Faker;
    class CompanyTableSeeder extends Seeder {
        public function run()
            $faker = Faker::create();
            foreach(range(1, 100) as $index)
                    'title' => $faker->title,
                    'description' => $faker->text(400),
            $this->command->info('Products table seeded!');

    Seeder dan 100 tane rastgele anlamlı veriyi database’e eklemesini istedik.

  • <?php
    class DatabaseSeeder extends Seeder {
    	 * Run the database seeds.
    	 * @return void
    	public function run()

    ‘app/database//seeds/DatabaseSeeder.php’ yukarıdaki kodlara $this->call methodu ile yeni oluşturduğumuz seeder çağırdık.

  • php artisan db:seed

    Evettt tamamdır. Tam 100 tane anlamlı verimiz oldu. Bu şekilde projenize stres testi yapabilir ve optimizasyon sorunlarını çözebilirsiniz. Artık boş ve anlamsız verilerle web projesi oluşturmaya son!! 😀

Bir dahaki Laravel yazımızda görüşmek dileğiyle..

Muharrem Tığdemir

Laravel PHP

Laravel 4 Routing Resorce-Controller-Farkı

Merhaba Arkadaşlar ,

Laravel yazı dizilerime routing ile devam ediyorum. Daha önce bir php framework kullandıysanız routing size yabacı olmasa gerek. Benim değinmek istediğim nokta Resource ve Controller routing tasarım farkı ve neden tercih edilmesi hakkında olacak.

Temel routing ile ilgili daha ayrıntılı bilgiyi Laravel sitesinden alabilirsiniz.

Get Routing

  • Route::get('/', function()
        return 'Hello World!! Muharrem Tigdemir';

    Get methodu iki parametre alıyor. URI ve fonksiyon. http://localhost

    Routing Parametreler

  • Route::get('test/{id}', function($id)
        return 'Test Value : '.$id;


Post Routing

  • Route::post('post/test', function($id)
        return 'Post'. $id;

    Get ile aynı kullanıma sahip post yapısı.  http://localhost/post/test

Any Routing

Evet temel Routing öğrendik peki Route:controller ve Route:Resource farkı ne? Bunu anlayabilmek için öncelikle birer route tanımlayarak çıktılarını inceleyelim.

  • Route::controller('test' , 'TestController');
    Route::resource('photo', 'PhotoController');

    Ben yukarıdaki iki routing’i tanımladım.

  • php artisan route

    Konsoldan yukarıdaki komutu yazdığımızda

Laravel Route
Laravel Route Resource ve Controller

Yukarıdaki resimden görebileceğiniz gibi Laravel önceden tanımlı(pre-defined) fonksiyonları arıyor ve bazılarını missing olarak gösteriyor.

Resource  Methodları

  1. index
  2. create
  3. store
  4. show
  5. edit
  6. update
  7. destroy

Controller Methodları

  1. getIndex
  2. postSecond

Gerçekten lafı biraz uzattım sonuç olarak..

Controller Routing

Eğer standartlara uygun Routing yapmak istiyorsanız Controller seçiminiz olmalı. Yeni bir method tanımlarken dikkat etmeniz gereken. Get method için fonksyionun ismi get ile başlamalı ve devam eden ilk harf büyük olmalı. Post method için fonksyion post ile başlamalı ve devam eden ilk harf büyük olmalı. Örnek Routing ve sonucu..

  • class TestController extends BaseController {
    	public function getIndex()
    		// URL /test
    		echo "Index Sayfası";
    	public function getMy()
    		// URL /test/my
    		echo "My fonksyionu";
    	public function getMylist()
    		// URL /test/mylist
    		echo "My List fonksyionu";
    	public function postProfile()
    	    // URL /test/profile NOT : POST
    		echo "Post Method";
  • Route::controller('test' , 'TestController');

Resource Routing

Eğer CRUD işlemleri yapacağınız bir senaryo var ise seçiminiz Resource Routing olmalı.

  • Route::resource('photo', 'PhotoController');



Muharrem Tığdemir