Laravelのmigrate:resetで外部キーエラー
Laravelで
php artisan migrate:reset
したら、以下のエラーが出た。外部キー関連のエラー。
SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or upda te a parent row: a foreign key constraint fails (SQL: drop table if exists `tags`)
dropする順番間違えていた。先にキーの関連付けテーブル消すべきだった。以下が正しい順番。
public function down() { Schema::dropIfExists('title_tag'); Schema::dropIfExists('tags'); }
Laravelのログインをメールアドレス以外にする
AuthControllerに「protected $username = 'name';」を足す。
<?php namespace Song2\Http\Controllers\Auth; use Song2\User; use Validator; use Song2\Http\Controllers\Controller; use Illuminate\Foundation\Auth\ThrottlesLogins; use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers; class AuthController extends Controller { /* |-------------------------------------------------------------------------- | Registration & Login Controller |-------------------------------------------------------------------------- | | This controller handles the registration of new users, as well as the | authentication of existing users. By default, this controller uses | a simple trait to add these behaviors. Why don't you explore it? | */ use AuthenticatesAndRegistersUsers, ThrottlesLogins; protected $username = 'name'; /** * Where to redirect users after login / registration. * * @var string */ protected $redirectTo = '/';
XserverにLaravelを置くときの.htaccess
<IfModule mod_rewrite.c> suPHP_ConfigPath /home/MyServerName/MyDomain/xserver_php/ AddHandler x-httpd-php5.5 .php .phps AddHandler fcgid-script .php .phps FCGIWrapper "/home/MyServerName/MyDomain/xserver_php/php-cgi -c /home/MyServerName/MyDomain/xserver_php/php.ini" .php FCGIWrapper "/home/MyServerName/MyDomain/xserver_php/php-cgi -c /home/MyServerName/MyDomain/xserver_php/php.ini" .phps <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
LaravelのPHPUnitでログインする
LaravelのPHPUnitでログインする。
class AccessTest extends TestCase { public function setUp() { parent::setUp(); $user = \App\User::where('name', 'dummy')->first(); $this->be($user); } public function testBasicExample() { $this->visit('home'); } }
phpdocを準備しないで使う
私はphpDocumentorが好きなんだけど、Windows上だとインストールが大変苦労する。なので「phpDocumentor.phar」から直接実行している。
phpDocumentor.pharをダウロードする
ここにphpDocumentor.pharがあるのでダウンロードする。
github.com
phpDocumentor.pharを実行したいフォルダに置く
私はLaravelのartisanがある場所と同じところに置いている。
実行する
php phpDocumentor.phar -d app/
Laravel5.2のアプリケーション名を変更する
Laravel5.2のマニュアルからアプリ名変更のコマンドが消えていたのでメモ。
$ php artisan app:name Horsefly
Windows Xammp環境にphpcsをインストールする
Windows Xammp環境だとphpcsのバージョンは1.3でだいぶ古い。これだとPSR2が使えない。最新のバージョンをインストールする。
pear install PHP_CodeSniffer-2.5.0 phpcs --config-set encoding utf-8 phpcs --config-set default_standard PSR2
参考サイト
PHP CodeSniffer ルールセットのカスタマイズ方法blog.apar.jp
pear上でのインストールに失敗する
Pearの作業フォルダのデフォルトはCドライブなので、インストールに失敗することがある。
D:\xampp\source\futari>pear install PHP_CodeSniffer-2.5.0 downloading PHP_CodeSniffer-2.5.0.tgz ... Starting to download PHP_CodeSniffer-2.5.0.tgz (480,157 bytes) done: 480,157 bytes ERROR: failed to mkdir C:\php\pear\tests\PHP_CodeSniffer\CodeSniffer\Core\File
正しいパスに変更する。
pear config-set doc_dir D:\xampp\php\pear pear config-set cfg_dir D:\xampp\php\pear pear config-set data_dir D:\xampp\php\pear pear config-set test_dir D:\xampp\php\pear pear config-set www_dir D:\xampp\php\pear
Laravel5のSeederでユーザ自動登録
Laravel5のSeederでユーザ自動登録
class UserTableSeeder extends Seeder { public function run() { \Myapp\User::create([ 'email'=>'Myemail@hatena.ne.jp', 'name'=>'myname', 'password'=>Hash::make('mypassword'), ]); } }
Owncloud VS Pydio
以前「Pydioを選ぶぞ!」って書いたけど、Pydioのアンドロイドクライアントの日本語未対応っぷりに辟易した。なのでOwncloudに切替中。
Laravelでファイルを生成せずにファイルダウンロード
Laravelでファイルを生成せずにファイルダウンロードしたときのメモ
$stream = fopen('php://temp', 'w'); foreach (Title::all() as $title) { fputcsv($stream, $title->toArray()); } rewind($stream); $csv = mb_convert_encoding(str_replace(PHP_EOL, "\r\n", stream_get_contents($stream)), 'SJIS', 'UTF-8'); $headers = array( 'Content-Type' => 'text/csv', 'Content-Disposition' => 'attachment; filename="' . $filename . '"' ); return Response::make($csv, 200, $headers);