knaka Tech-Blog

AI, IoT, DIYエレクトロニクス, データサイエンスについて投稿予定です。

Laravel 5.8 で、todo機能、markdown表示対応

index:

概要:

前の Laravel 5.8 関係で、
todo機能の追加、markdown 対応表示等の実装
となります

環境

php7.3
Laravel 5.8
mysql

参考のコード

github.com

画面

・詳細
f:id:knaka0209:20191217150314p:plain

・一覧
f:id:knaka0209:20191217150433p:plain

実装など

・コントローラ
https://github.com/kuc-arc-f/lara58a_3todo/blob/master/app/Http/Controllers/TodosController.php

    public function index(Request $request)
    {   
        $complete = 0;
        $inputs = $request->all();
        if(isset($inputs["complete"]) ){
            $complete = $inputs["complete"];
        }
        $todos = Todo::orderBy('id', 'desc')
        ->where("complete" , $complete)
        ->get();
//        ->paginate(10 );
        return view('todos/index')->with('todos', $todos );
    }

Blade

・詳細, markedのライブラリでMD変換しています。
https://github.com/kuc-arc-f/lara58a_3todo/blob/master/resources/views/todos/show.blade.php

$(function() {
    //MD_convert
    var content = $("#content-hidden").val();
    content= marked(content);
//    console.log(content);
    $("#content_wrap").append(content);
});

Laravel 5.8 で、Transactionで DB一括登録など

index:

概要:

前の Laravel 5.8 関係で、
Transactionを、使用して保存で
複数の関連テーブル保存を、一括して行う例となります

環境

php7.3
Laravel 5.8
mysql

参考のコード

github.com

準備など

・表の作成
 Member, Dept

コントローラ

https://github.com/kuc-arc-f/lara58a_2/blob/master/app/Http/Controllers/DeptsController.php
・親テーブル Dept, 下層の Member
 を同時に保存し、コミットします


    /**************************************
     *
     **************************************/    
    public function store(Request $request)
    {
        $inputs = $request->all();
        DB::beginTransaction();
        try {
            $dept = new Dept();
            $dept->fill($inputs);
            $result = $dept->save();
//debug_dump($dept->id );
            if($result && isset($inputs["member"]) ){
                $this->save_members($inputs["member"], $dept->id);
            }
//exit();
            DB::commit();
        } catch (\Exception $e) {
            DB::rollback();
        }        
       

Laravel 5.8 で、モデル結合など

index:

概要:

前の Laravel 5.8 関係で、
Eloquent の外部結合等です

modelアソシエーションでなく。
画面の、実行時に結合する形となります。

環境

php7.3
Laravel 5.8
mysql

準備など

・表の作成
 Member, Dept

コントローラ

https://github.com/kuc-arc-f/lara58a_2/blob/master/app/Http/Controllers/MembersController.php

・members.dept_id 、depts.id で結合します。

  • >join() で結合しています。
  • >leftJoin() とかも、可能のようです。
        $members = Member::select([
                    'members.id',
                    'members.dept_id',
                    'members.name',
                    'depts.name as dept_name',
                ])
                ->join('depts','depts.id','=','members.dept_id')
                ->paginate(5);

参考のコード

github.com

Laravel 5.8 ユーザー認証

index:

概要:

前の Laravel 5.8 関係で、
ユーザー認証の追加等になります。

環境

php7.3
Laravel 5.8
mysql

追加方法

php artisan make:auth

画面

f:id:knaka0209:20191211131129p:plain

/login で、起動できました。

認証チェックを、画面に追加

コントローラに、下記auth を追加。

https://github.com/kuc-arc-f/lara58a_2/blob/master/app/Http/Controllers/Controller.php

    public function __construct()
    {
        $this->middleware('auth');
    }

ページーション

TasksController

https://github.com/kuc-arc-f/lara58a_2/blob/master/app/Http/Controllers/TasksController.php

        $tasks = Task::orderBy('updated_at', 'desc')->paginate(5);
        return view('tasks/index')->with('tasks', $tasks);

validator

TasksController->store()

入力値の検証

        return Validator::make($data, [
            'title' => ['required', 'string', 'max:255'],
        ]);

参考のコード

github.com

Laravel 5.8 +Vue.js CRUD作成など

index:

概要:

前の Laravel関係になりますが
Laravel 5.8 + Vue.jsで、
CRUD作成となります。

・Vue-CLI, vue-router等使わずに、vue.js, axios 等で
 実装する方法としています。

環境

php7.3
Laravel 5.8
mysql
Vue.js

参考のコード

github.com

準備など

表作成等は、前回を参考にています

画面起動 URL は、前と同様の web.php です。

参考のページ

github.com

Laravel 5.8 設定編 CRUD作成など #php

概要:

Laravel 5.8 インストールや、CRUD作成など
となります。

環境

php7.3
Laravel 5.8
mysql

参考のコード

github.com

追加など

php composer.phar create-project --prefer-dist laravel/laravel lara58a "5.8.*"

helper:

php composer.phar require laravelcollective/html "5.8.*"

serve起動
php artisan serve

http://localhost:8000 で、画面起動できました。

artisanコマンドメモ

・サービス起動
 php artisan serve
・migrate実行
 php artisan migrate
・migrate作成
php artisan make:migration create_tasks_table --create=tasks
・ルーティング表示
php artisan route:list
・Controller追加
 php artisan make:controller TasksController
・model 追加
php artisan make:model Task
・auth追加
php artisan make:auth

TensorFlow.js + node/express , HTTP経由でモデル読込み、予測結果の出力

index:

概要:

前のTensorFlow.js 関係で、
node側で学習したモデルを、HTTP経由で読み込み
ブラウザ側で、評価する例となります。
前回と異なり。node側で評価しない構成です

環境

TensorFlow.js
node.js
Vue.js
Ubuntu16

参考のコード

github.com

実装など

expressに、htmlを配置しておきます
tf.loadLayersModel で、URL指定して。読み込めました

https://github.com/kuc-arc-f/tfjs_app1_express2/blob/master/public/train.html

async function run_train() {
    const data = await getData();
    var chart_dats = convert_chart_arr(data)
console.log(chart_dats.lbl.length )
    //return
    const tensorData = convertToTensor(data);
    const {inputs, labels} = tensorData;
    const model = await tf.loadLayersModel('http://localhost:3000/my-model/model.json');
    //pred
    const [xs, preds] = testModel(model, data, tensorData, 
                        chart_dats.lbl.length);
//    console.log( preds );
    //chart-disp
    var config = get_chart_config(chart_dats, preds);
    var ctx = document.getElementById('myChart').getContext('2d');
    window.myLine = new Chart(ctx, config);

    console.log('Done Training');
}

機械学習は、事前に完了させておきます
https://github.com/kuc-arc-f/tfjs_app1_express2/blob/master/train.js