Archive | Laravel4 RSS feed for this section

Learning Laravel4 (5):Eloquent ORMを使う このエントリーをはてなブックマークに追加

29 12月

引き続きクイックスタートをなぞります。

モデルを定義

artisanでマイグレーションを行ったからか、app/models/にUser.phpが作成されていました。データを入れろと言われたので、適当にMySQLでデータを入れてみる。

INSERT INTO users VALUES(null, 'USERNAME', sha1('PASSWORD'), now(), now());

ルートを変更

こんなんでいいのか…なんか簡単すぎて怖い(マジで?っていう…)なんだかこの簡単すぎてマジ?本当にちゃんといろいろできる?という気持ちはCakePHPに似てる気がする。

Route::get('users', function()
{
  $users = User::all();
  return View::make('users')->with('users', $users);
});

データの表示

@extends('layout')
@section('content')
  @foreach($users as $user)
    <p>{{ $user->username}}</p>
  @endforeach
@stop

ルーティングの、makeで指定しているのがテンプレート名、withがテンプレートにパラメータを渡しているかんじなのかな

Learning Laravel4 (4):MySQLの設定とマイグレーション このエントリーをはてなブックマークに追加

28 12月

続いてクイックスタートにMySQLの設定をしろと言われたので、その通りにする(あのクイックスタート、全然親切じゃないね)。

app/config/database.php がデータベースの設定関連のファイルなので編集する。今回はMySQLを使うので、driverがmysqlになっている部分を確認。ユーザ名やパスワードを記載した。

マイグレーション

まずはマイグレーションを作成するため、次のようなコマンドを打った。

php artisan migrate:make create_users_table

すると、「2014_12_28_104241_create_users_table.php」なるファイルが…。え、日付入ってますけど大丈夫?いいの?と思いつつも、クイックスタートが言うならまぁ…いいのかな?と思ってそのまま続けます。

usersテーブルのマイグレーション定義

次のように定義しました。

<?php

use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreateUsersTable extends Migration {

  /**
   * Run the migrations.
   *
   * @return void
   */
  public function up()
  {
    Schema::create('users', function($table)
    {
      $table->increments('id');
      $table->string('username', 20);
      $table->string('password', 255);
      $table->timestamps();
    });
  }

  /**
   * Reverse the migrations.
   *
   * @return void
   */
  public function down()
  {
    Schema::drop('users');
  }

}

Macでマイグレーション実行時にエラー

php artisan migrate、とタイプするも、実行時にエラー。

SQLSTATE[HY000] [2002] No such file or directory

symfonyでも前にMySQLのソケットが見つからなくてこのエラーがでたので、多分そんなかんじかなーと思って検索、StackOverflowさまさまです。

Setting up Laravel on a Mac php artisan migrate error: No such file or directory

そういうわけで、app/config/database.phpを編集。中略ですが、次のようにunix_socketを設定。

    'mysql' => array(
      'driver'    => 'mysql',
      'host'      => 'localhost',
      'unix_socket' => '/tmp/mysql.sock',
      'database'  => 'wiki',
      'username'  => 'USERNAME',
      'password'  => 'PASSWORD',
      'charset'   => 'utf8',
      'collation' => 'utf8_unicode_ci',
      'prefix'    => '',
    ), 

今度はmigrateコマンドもばっちりうまくいった。

mysql&gt; desc users;
+------------+------------------+------+-----+---------------------+----------------+
| Field      | Type             | Null | Key | Default             | Extra          |
+------------+------------------+------+-----+---------------------+----------------+
| id         | int(10) unsigned | NO   | PRI | NULL                | auto_increment |
| username   | varchar(20)      | NO   |     | NULL                |                |
| password   | varchar(255)     | NO   |     | NULL                |                |
| created_at | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
| updated_at | timestamp        | NO   |     | 0000-00-00 00:00:00 |                |
+------------+------------------+------+-----+---------------------+----------------+
5 rows in set (0.01 sec)

usernameなどの第二引数が文字列長ですね。そして、$table->timestamps();とすることでsymfony1.4などによくあるTimestampable的なものになるみたい。ほーほー

Learning Laravel4 (3):はじめてのLaravelとApacheの設定 このエントリーをはてなブックマークに追加

28 12月

子どもが寝てからしかパソコン触る時間がないのでなかなか進まない。気を取り直して続きのLaravel。

権限の付与

Webサーバがアクセスできるよう、app/storageディレクトリに権限を付与した。

chmod -R 777 app/storage

サーバ設定を変更

開発はいつもApacheを使っていたので、今回もLaravelのサーバでなく、普通にApacheを使っていきます。今までは、例えばブログを開発するなら、blog.localhostというようなアドレスにアクセスすると開発ディレクトリ以下のblogディレクトリを参照する、というような流れにしていたので、同様に設定しました。

<VirtualHost *:80>
  ServerName wiki.localhost
  ErrorLog "/path/to/error/log/wiki.error.log"
  DocumentRoot "/path/to/dev/wiki/public"
  DirectoryIndex index.php
  <Directory "/path/to/dev/wiki/public">
    AllowOverride All
    Require all granted
  </Directory>
</VirtualHost>

MacをYosemiteにしたらApacheのバージョンが勝手に上がって、Allow From…みたいな書き方がRequire all…みたいに書くようになってました。ちょっとハマった。

サーバ名wiki.localhostでアクセスしたときに自分自身を参照するよう、/etc/hostsも書き換えます。

127.0.0.1 wiki.localhost

なんか全然Laravelまでいかないね。Webアプリ作るときっていつでもそうだよね、プログラミングよりサーバの設定ごちゃごちゃいろいろしないといかん