- 投稿日:2019-05-02T20:26:04+09:00
mySQLメモ
SQLをリポジトリに追加
sudo rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpmインストール
sudo yum install mysql-community-devel mysql-community-server起動
sudo systemctl start mysqld自動起動設定
sudo systemctl list-unit-files --type=service | grep mysqld初期設定
sudo cat /var/log/mysqld.log | grep 'temporary password'ログイン
mysql -u root -p
- 投稿日:2019-05-02T19:14:00+09:00
[忘備録]laravel5.5 データベースjoin 結合
laravelを用いて初めてデータベースの結合をしてみると、想像以上に簡単だったので、忘備録として残しておこうと思う。
前提
データベースにlaravelデフォルトの
users
に加え、id
,uesr_id
,text
カラムを含むposts
テーブルを用意する。postsテーブルを作成する際はマイグレーションファイルで
user_id
カラムを次のように設定する。$table->integer('user_id')->unsigned(); $table->foreign('user_id')->references('id')->on('users');流れ
①モデル設定
②コントローラーから使う①モデル設定
今回はユーザーが複数のpostを持つというで、以下のような関係になります。
user has many posts posts belongs to userこの点を踏まえて、
User.php
,Post.php
に以下のコードを追記。User.phppublic function posts() { return $this->hasMany('App\Post'); }Post.phppublic function user() { return $this->belongsTo('App\User'); }これで準備は整いました。
②コントローラーから使う
今回はコントローラーで確認用
unction join()
という関数を作ります。Post.phpfunction join() { #postsテーブルのuser_idが1のレコードを全て取得 $user = User::find(1); $posts = $user->posts; #postテーブルのデータを全て取得 $posts = Post::all(); #上記で取得した「postsテーブルのuser_idが1のレコード」をひとつずつ表示 foreach ($posts as $post) { echo $post . "<br/>"; } #上記で取得した「postテーブルのデータ」から結合されたユーザーの名前をひとつずつ表示する。 foreach ($posts as $post) { echo $post->user->name . "<br/>"; } }これで、適当にルート設定をし、うまく表示されていることを確認することができました。
おかしな部分がある場合、指摘していただけるとありがたいです。
- 投稿日:2019-05-02T11:02:35+09:00
mysqlの文字コード変更(メモ)
覚え書です
mysqlの文字コードをlatin1からutf8に変更するために/etc/my.cnfをいじったら、なぜかmysql自体が起動しなくなったのでdb作成後に文字コードを変更することにした
初めは
mysqlALTER DATABASE [ database ] CHARACTER SET [ character set ] COLLATE[ collations ];で変更してたが
mysqlSET [ variable_name ] = [ character set ];こっちの方がやり易い
- 投稿日:2019-05-02T05:02:42+09:00
macOSのターミナルでssh接続先(Ubuntu18)のMySQLで日本語を入力すると日本語が消える
TerminalでUbuntu18.04のサーバにssh接続して、mysqlを起動してvaluesに日本語を入力すると"mysql> "プロンプト画面で、日本語をタイプすると、未変換状態の時は表示るが、Enterキーで確定すると日本語が消える。文字化けでない。これを解決するのに役立った解決方法は以下のコードを/etc/mysql/my.cnfに入力して解決した。
[mysqld] character-set-server = utf8 [mysqldump] default-character-set = utf8