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と組み合わせたりとか、 色々できるようです。
複雑なデータ取得もできるようになりたいです。
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;