閲覧が無い故に良いメモ帳と化したプログラマーブログ

主にphp関連の技術ブログ。閲覧が無い為、マークダウンが使える良いメモ帳と化している。誤ってアカウントパスワードを書いても大丈夫だ。なぜなら誰も閲覧しないからな。安心のブログシステムである。

symfony4のコマンドチートシート

概要

symfony4のよく使うコマンドを整理していく。 基本的にはphp bin/console list (make)といった感じで、続きを知りたいコマンドをlistの後に打つことで一覧が出るのでこれを使うこと。 随時追加予定。

ルートの確認

php bin/console debug:router

コントローラーの作成

// UserControllerを作成
php bin/console make:controller User

Migrationファイルの削除

$ php bin/console doctrine:migrations:version 20171210142949 --delete

postgreSQLコマンドチートシート

概要

これまでずっとMySQLを使用してきた私がPostgreSQLを使うことになったので、よく使うコマンドのMySQL->PostgreSQL対応表を纏めてみる。

login

psql -U username -h hostname

show databases

\l

use databasename

\c databasename

show tables

\dt

テーブル定義確認

\d table_name

exit

\q

Homesteadのphp.iniを編集する

Homesteadのphp.iniを編集する。 ディストリビューションUbuntuなので下記手順で更新を行う。

vagrant@homestead:~$ cat /etc/issue
Ubuntu 16.04.3 LTS \n \l

1. php.iniの場所を確認する

// 1. phpのバージョンを確認
vagrant@homestead:~$ php -v
PHP 7.2.2-1+ubuntu16.04.1+deb.sury.org+1 (cli) (built: Feb  1 2018 16:01:26) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.2-1+ubuntu16.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies
    with blackfire v1.18.2~linux-x64-non_zts72, https://blackfire.io, by SensioLabs

// 2. etc配下にphpフォルダがあるので使用しているバージョンのフォルダに入る。
vagrant@homestead:~$ cd /etc/php
vagrant@homestead:/etc/php$ ls -l
total 16
drwxr-xr-x 5 root root 4096 Feb  5  2018 5.6
drwxr-xr-x 5 root root 4096 Feb  5  2018 7.0
drwxr-xr-x 5 root root 4096 Feb  5  2018 7.1
drwxr-xr-x 5 root root 4096 Feb  5  2018 7.2

// 3. このバージョンフォルダの中のfpmというフォルダ内にphp.iniがある。
vagrant@homestead:~$ cd /etc/php/7.2/fpm

2. php.iniのRW権限付与

$ sudo chmod -R ugo+rw php.ini

3. php.ini編集

$ sudo vi php.ini

3. Homesteadを用いたsymfony4環境構築手順(Entity&テーブル作成編)

DBの環境を整えたらMVCのModelとなるものを作成していく。 symfony4では(一般的にもですが)これをEntitiyと呼ぶ。下記の動画を参考にしEntityとテーブル作成を行った。

Symfony 4 : Authentication (Login page)

概要

今回はUserテーブルを作成する。Laravelだとphp artisan make:authでかなりしっかりとしたログイン画面が出来る。symfonyはこの辺りが無い?

1. Entityの作成

vagrant@homestead:~/code$ php bin/console make:entity

上記コマンドを入力すると、対話形式でEntityの作成が行われる。 今回は下記のような設定とした。作成されたファイルはscr\Entity\User.phpに配置される。

vagrant@homestead:~/code$ php bin/console make:entity

 Class name of the entity to create or update (e.g. DeliciousChef):
 > User

 created: src/Entity/User.php
 created: src/Repository/UserRepository.php

 Entity generated! Now let's add some fields!
 You can always add more fields later manually or by re-running this command.

 New property name (press <return> to stop adding fields):
 > username

 Field type (enter ? to see all types) [string]:
 >

 Field length [255]:
 >

 Can this field be null in the database (nullable) (yes/no) [no]:
 >

 updated: src/Entity/User.php

 Add another property? Enter the property name (or press <return> to stop adding fields):
 > password

 Field type (enter ? to see all types) [string]:
 >

 Field length [255]:
 >

 Can this field be null in the database (nullable) (yes/no) [no]:
 >

 updated: src/Entity/User.php

 Add another property? Enter the property name (or press <return> to stop adding fields):
 > email

 Field type (enter ? to see all types) [string]:
 >

 Field length [255]:
 >

 Can this field be null in the database (nullable) (yes/no) [no]:
 >

 updated: src/Entity/User.php

 Add another property? Enter the property name (or press <return> to stop adding fields):
 >



  Success!


 Next: When you're ready, create a migration with make:migration

2. Entityの定義

Entityのファイルを開き、必要なカラムを定義していく。デフォルトではidだけが定義されている。このEntity定義を基にテーブルが作成される。

<?php

namespace App\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * @ORM\Entity(repositoryClass="App\Repository\UserRepository")
 */
class User implements UserInterface
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=255, unique=true)
     */
    private $username; 
  ...

3. テーブル作成(マイグレーションの実施)

下記のコマンドでEnity定義を基にしたマイグレーションを実施する。 コマンド後はマイグレーションファイルとテーブルが作成されている。

//マイグレーションファイルの作成
php bin/console doctrine:migrations:diff 
//テーブルの作成
php bin/console doctrine:migrations:migrate

Gitの使い方(ローカルのmasterを強制的にリモートのmasterに合わせる)

やりたいこと

Git pullしたときにコンフリクトが起き解決したい。 間違いないリモートのマスターブランチを、強制的にローカルに取り込みたいときに使うコマンドです。

$ git fetch origin master
$ git reset --hard origin/master

Gitの使い方(コミットの取り消し)

やりたいこと

Gitの取り消し方法を纏めた。 取り消しパターンは下記で十分だと思う。

  • 変更の取り消し
  • addの取り消し
  • commit/pushの取り消し

コマンド紹介

1. 変更の取り消し

$ git checkout .

上記では新規追加ファイルを「変更」として見ていない為、ファイル追加含めた変更を取り消すには下記コマンドを実行する。

$ git clean -df .

2. addの取り消し

$ git reset HEAD .

addだけが取り消され、変更内容が取り消される訳ではないので注意すること。

3-1. commitの取り消し

$ git reset --hard [commit id]

git logでcommit idを調べてから行うこと。 コミットを取り消しかつ変更内容もろとも削除する場合 --hard コミット取り消しのみで、手元に変更内容は残す --soft また直前のコミットを取り消すgit reset --hard HEAD^も便利。

3-2. pushの取り消し

$ git revert [commit id]
$ git push

こちらは取り消しcommitをPushするというイメージ。 参考までに複数のpushを取り消したい場合は下記参照。-nで取り消しcommitを一旦保留し一括でcommit → pushすればよい。

$ git revert -n [commit id 1]
$ git revert -n [commit id 2]
...
$ git commit
$ git push

Gitの使い方(進行中の作業を退避させたい)

Sourcetreeからの脱却を目指し、Gitコマンドを打てるようになりたい。 そんなあなた(いや私です)へユースケースに応じたコマンドをご紹介します。

やりたいこと

現在作業中のコミットしていないブランチの変更を一旦退避させる。 退避後は別のブランチに切り替えて作業ができる。退避した内容は当時の作業ブランチはもちろん、どのブランチにも戻すことができる。

1. 変更の退避

$ git stash

addに関係無くコミットしていない変更を退避させることが出来る。

2. 退避した作業の確認

$ git stash list

// ブランチ名やコメントが確認できる
stash@{0}: WIP on master: 45ccda2 samplefile added
stash@{1}: WIP on develop: 45ccda2 vuejs install

3. 退避した作業を戻す

$ git stash apply stash@{0}

これは現在のブランチに対して行われる。繰り返しになるが、当時のブランチで無くても良い。stash名を指定しない場合は、直近の退避が戻ることになる。

補足

退避した作業を消したいとき

$ git stash drop stash@{0}

退避した作業全てを消したいとき

$ git stash clear