Pycharm上でプログラムが実行できなかった。調べたらpython interpreterの設定が「None」になっていた。何も設定しないとそうなるのかよ。
Python.exeを指定したら動いた。
LaravelのEloquentで複数条件を指定する
Eloquentのwhereメソッドは重ねることもできる。
Title::where('type', '=', $type)->where('rank', '>', '100')->get();
「orWhere」というのもある。
Title::where('type', '=', $type)->orWhere('rank', '>', '100')->get();
Pydio vs Owncloud
ファイル管理のためのソフトが欲しかったけど、PydioとOwncloudのどっちが便利か悩んで決められなかった。だから両方ともサーバに入れてみた。
ところがOwncloudはちょっとバージョンアップしたらぶっ壊れてしまった。Pydioは5.2から6.0のバージョンアップもマウスクリックだけで無事終了。今後はPydio一本で行こう。でもPydioのAndroidクライアントの使いにくさはなんとかしてほしい。
Perlでn次ハッシュを使った時のメモ
Perlでn次ハッシュを使った時のメモ
use strict; use warnings; my %hash; my @array1 = ('1','2','3'); my @array2 = ('a','b','c'); my @array3 = ('A','B','C'); foreach my $value1 (@array1) { foreach my $value2 (@array2) { foreach my $value3 (@array3) { push(@{$hash{$value1}{$value2}},$value3); } } } foreach my $key1 (keys(%hash)) { my %hash2 = %{$hash{$key1}}; foreach my $key2 (keys(%hash2)){ foreach (@{$hash{$key1}{$key2}}) { print "$_ "; } } }
出力結果は
A B C A B C A B C A B C A B C A B C A B C A B C A B C
あんまり意味ないな。
Eloquentを使ってfindの前後を取得する
Eloquentを使ってfindの前後を取得するテクニックがあった。
How to get previous / next records in DB with Eloquent. (Page 1) / Laravel 3.x Code Samples / Laravel Forums
なるほど、モデルにそういうメソッドを追加すればいいのか。
idだったら上記のテクニックでOKだけど、id以外の要素だと工夫が必要だね。
public function get_next() { return static::where('votes', '<', $this->votes) ->where('subject', $this->subject) ->orderBy('votes','DESC') ->first(); } public function get_previous() { return static::where('votes', '>', $this->votes) ->where('subject', $this->subject) ->orderBy('votes','DESC') ->first(); }
LaravelのEloquentでID値が指定できない
下記のようにidを指定してcreate()しても、指定した数ではなくて通番になっていた。
$name = Name::find(4); Title::create(['id' => $name->id])
モデル上でidを保護しているのが原因だった。
<?php class Title extends Eloquent { protected $guarded = ['id'];
モデルの保護を全消したら想定通りの動作になった。
<?php class Title extends Eloquent { protected $guarded = [];
さくらのレンタルサーバにLaravel4.2をインストール
以前にも似たエントリ書きました。 さくらのレンタルサーバにLaravelをインストール - ふたりはララベル (Laravel PHP Framework)
以前との違いは
- Laravel 4.2 が対象。
- publicを移動せずにシンボリックリンクを貼る。
です。
インストールディレクトリを決める
今回は以下のフォルダに作ることにしました。
/home/mysakura/source
Composerをインストールする
例によってレンタルサーバにComposerをインストールする - ふたりはララベル (Laravel PHP Framework)を参照してください。composer.pharの置き場所は/home/mysakura/sourceです。
laravelをインストールする
以下のコマンドを実行すればインストールが始まります。
php composer.phar create-project laravel/laravel myproject --prefer-dist Installing laravel/laravel (v4.2.11) - Installing laravel/laravel (v4.2.11) Downloading: 100% Created project in myproject
シンボリックリンクを貼る
publicフォルダにシンボリックリンクを貼ります。
ln -s /home/mysakura/source/myproject/public/ /home/mysakura/www/myproject
ここでhttp:://mysakura.jp/myprojectにアクセスしてもまだエラーが出ます。
htaccessを編集する
htaccessのパスは
/home/mysakura/source/myproject/public/.htaccess
です。
「Options -MultiViews」の行をコメントアウトしてください。
<IfModule mod_rewrite.c> <IfModule mod_negotiation.c> #Options -MultiViews </IfModule> RewriteEngine On # Redirect Trailing Slashes... RewriteRule ^(.*)/$ /$1 [L,R=301] # Handle Front Controller... RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule>
これでhttp:://mysakura.jp/myprojectにアクセスすればLaravelのアイコンが出ます。
LaravelのEloquentでテーブルを消去する
LaravelのEloquentからtruncateも実行できる。
Mymodel::truncate();
LaravelのWorkbenchでdb:seedを実行する
LaravelのWorkbench内にSeederを作ってdb:seedしたい。
まず以下のフォルダを作る。
workbench\your_vendor_name\your_package_name\src\database\seeds
seedsフォルダ内で普通にSeederを作る。ちなみに以下の例ではFakerを使ってSeederを作ってみた。
<?php use Faker\Factory as Faker; class FakerSeeder extends Seeder { public function run() { $faker = Faker::create(); foreach(range(1, 100) as $index){ Title::crate(['name' => $faker->name]); } } }
workbenchのcomposer.jsonに最初に作ったseedsフォルダのパスを記述する。
"autoload": { "classmap": [ "src/controllers", "src/database/seeds", "src/migrations", "src/models", "src/views" ] }
dump-autoloadする。これで準備完了。
php artisan dump-autoload
あとはphp artisanで db:seedを実行する。
php artisan db:seed --class=FakerSeeder
Bootstrapのモーダルで枠外をクリックしても解除させない
Bootstrapで、モーダルウィンドウの枠外をクリックしても解除させないためには「data-backdrop="static"」を設定する。
<div class="modal hide fade" data-backdrop="static" id="myModal"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal">×</button> <h3>Settings</h3> </div> <div class="modal-body"> <p>Here settings can be configured...</p> </div> <div class="modal-footer"> <a href="#" class="btn" data-dismiss="modal">Close</a> <a href="#" class="btn btn-primary">Save changes</a> </div> </div>
HTMLのbuttonタグに送信機能を持たせたくない
HTMLのbuttonに機能を持たせたくないときは「type="button"」とすればよい。Bootstrapでボタンをラベル代わりに使うときに便利。
<button type="button">WARNING</button>
phpMyAdminからXMLエクスポートしたファイルをPHPで扱う
phpMyAdminからXMLエクスポートしたファイルをPHPで扱ったときのメモ。
$xmlData = simplexml_load_file('dare_comments.xml'); foreach ($xmlData->database->table as $xml) { $data = [ 'id' => $xml->column[0], 'name' => $xml->column[1], ]; Title::create($data); }
Laravelでworkbenchのconfigをコピーする
Laravelでパッケージのconfigをコピーするときはconfig:publishを使う。
# php artisan config:publish vendor/package
しかし自作パッケージの場合は失敗する
# php artisan config:publish myvendor/mypackage [InvalidArgumentException] Configuration not found.
自作パッケージの場合はパスまで指定しよう。
# php artisan config:publish --path=workbench\myvendor\mypackage\src\config myvendor/mypackage
OctoberCMSをインストールしてみた
Wordpressに飽きてきたので、OctoberCMSをインストールしてみた。install.phpを使うとインストール前チェックでエラーが出るので、Composerを使ってインストールしたら成功した。
下記ページの「Composerによるコマンドラインからのインストール」に従えば出来る。
Laravel製のCMS 「October」 のインストール ~back to basics~|October CMS|スタッフブログ|京都のホームページ制作 株式会社Nextat(ネクスタット)
さっそくブログ用プラグインの「RainLab.Blog」を入れてみたけど、そもそもOctoberCMSの使い方がよくわからない。カスタマイズ前提なので敷居が高い。日本語情報サイトが増えるのを待つか…。