CRUDのC-2

今日も昼休みに勉強したことのアウトプットをしていきます。

CURDのC の2回目です。 フォームヘルパーについて

ビュー部分

echo $this->Form->create();
echo $this->Form->input('title');
echo $this->Form->input('body');
echo $this->Form->button('submit');

echo $this->Form->end();

これだけでタイトルと本文のフォームが完成です。

次はコントローラー。

if ($this->request->is('post')) {
      $変数名 = $this->テーブル名->patchEntity(変数名, $this->request->data);
      $this->Posts->save(変数名);
      return $this->redirect(['action'=>'index']);
   }

定義した変数の中にデータを入れて、
もしリクエストがPostだったら保存してindexのページに戻りましょう。    それだけ。

先ずは基本から少しづつ勉強していきます。


以上です。

CakePHP CRUDのC

今日はCakePHPのCについて5分で記事にしようと思います。

まずControllerに

public function add()
{
   $変数名 = $this->テーブル名->newEntity();
   $this->set(compact('変数名'));
}

compact関数ではその中の引数が、ビューに渡す変数と値を配列とします。

続いてビュー部分ですが

<?= $this->Html->link('新規記事作成', ['action'=>'add'] ?>

新規記事作成を表示してそれに対応するアクションを呼び出します。

これで終わり。

findメソッド(CakePHP)

CakePHPのデータ取得、findメソッドについて。

$posts = $this->Posts->find('all');

全件のpostsテーブルからのデータ取得

$posts = $this->Posts->find('all');
$this->set(compact('posts'));

で全件をビュー側に渡してやる。

$posts = $this->Posts->find('all');
$this->set('post', $query->first());

一つ目の結果をビューに渡す。

$posts = $this->Posts->find('all', 
['conditions' => ['body like' => '%おはよう%']]);

オプションの設定。 おはようという文字を含むデータをbodyカラムから取得。

他にも配列で表示できるarrayと組み合わせたりとか、 色々できるようです。

複雑なデータ取得もできるようになりたいです。

正規表現

色んな場所で使う正規表現ですが、一々ググるのはだるいと思い、 暗記しようと思います。


.

ある一文字を意味する。


*

0回以上表示


+

1回以上表示


?

0回もしくは1回表示する。


^

先頭を表す。


$

末尾を表す。


{n}

n回表示する。 ya.{2}でyahooを取得できる。


{n,}

n回以上表示

ya.{2,} でyahoooooとかまで取得できる。


PHP 基礎知識1

var_dump(変数);

で変数の型を教えてくれる。

define("定数名", "値")

で定数の定義。

<?php

$array = array('lastname', 'email', 'phone');
$comma_separated = implode(",", $array);

echo $comma_separated; // lastname,email,phone

// 空の配列を使うと空文字列となります
var_dump(implode('hello', array())); // string(0) ""

?>

implode — 配列要素を文字列により連結する

interfaceは記述したクラスを使ってくださいよというルールみたいなもの。

SQL構文2

任意の位置で列を追加

alter table my_items add sales int after keyword;
update my_items set sales=18 where id=3;

値の取得

select sum(price) from my_items;
select max(price) from my_items;
select count(id) from my_items;
select avg(price) from my_items;

もう一つ makersというテーブルを作る。

create table makers (id int, name text, address text, tel text);
alter table makers modify id int auto_increment;
insert into makers set name='山田さん', address='東京都港区', tel='000-111-2222';
insert into makers set name='斎藤さん', address='北海道小樽市', tel='111-222-3333';
insert into makers set name='川上さん', address='神奈川県横浜市', tel='222-333-4444';

次回リレーショナルデータベースにいよいよ挑戦。 JOIN文は理解できるだろうか。

就活しながらだから、毎日勉強は少しづつしか進まないけれど頑張っていこう。

SQL構文1

今日はSQL文の勉強。


簡単なテーブル作成。

create database mydb;
use mydb;
create table items;
insert into items ( id, name) values( '1', '商品1');
insert into items ( id, name) values( '2, '商品2');
insert into items ( id, name) values( '3', '商品3');
insert into items ( id, name) values( '0, '商品0');
delete from items where name = '商品0';
select * from items order by id;

列の削除、ID毎に整列表示。


プライマリーキーの設定とその後、 プライマリーキーに重複するデータを挿入できるか確認。

create table my_items (id int, item_name text, price int);
insert into my_items set id=1, item_name='いちご', price=200;
update my_items set price=180 where id=1;
delete from my_items where id=1;
insert into my_items set id=1, item_name='いちご', price=180;
alter table my_items add primary key(id);
insert into my_items set id=1, item_name='りんご', price=180;
insert into my_items set id=NULL, item_name='りんご';

Duplicate entry '1' for key 'PRIMARY' プライマリーキーに設定したidを省いて挿入できるか確認。
insert into my_items set id=NULL, item_name='りんご';


alter table my_items modify id int auto_increment;
insert into my_items set item_name='りんご', price=90;

オートインクレメントをON。 無事挿入できた。


列の挿入とkeyowrd列の修正

alter table my_items add keyword text null;
update my_items set keyword='赤い, 甘い, ケーキ' where id=1;
update my_items set keyword='丸い, 赤い, パイ' where id=2;
update my_items set keyword='パック, 甘い , 黄色' where id=3;
update my_items set keyword='袋入, 青い , 眼精疲労' where id=4;

検索の仕方

select * from my_items where price=180;
select * from my_items where item_name='いちご'
select * from my_items where price<180;
select * from my_items where price>180;
select * from my_items where price<=180;
select * from my_items where id<>1;  //<>は不等号
select * from my_items where keyword like '%甘い%';
select * from my_items where price>=50 and price<150;
select * from my_items where id=1 or id=3;
select * from my_items where (id=1 or id=3) and price<150 and keyword like '%甘い%';

andはかつ、orはと といった意味で使う。


order byを使っての並び替え

select * from my_items order by id asc;
select * from my_items order by id asc;

Javaに繋ぐのはやめにしました。まだSQL単体で少し勉強しようと思います。