20201016のlaravelに関する記事は7件です。

LambdaでLaravelのコマンドを定期実行する

Laravelで書いたバッチを実行するにあたって、EC2インスタンスだと実行タイミング以外もコストがかかるし、ECSタスクだとコンテナの管理がちょっと面倒。Lambdaで動かせればメンテも楽だし安く上がりそうなのでやってみた。

前提

brefphp を導入済の環境。

実行するのは Laravel で作成済みのコマンド、croncmd:exec。通常は php artisan croncmd:execで実行。

brefphp の導入については brefphpを使って簡単にLaravelをサーバレス環境で動かす - Qiita がとてもわかりやすいです。

serverless.yml

今回は serverles.yml の設定のみです。例として月曜から金曜まで 09:00-17:00まで5分ごとに定期実行する設定を記載します。

input 部分で実行するコマンドを、rate で実行タイミングを指定します。時間についてはGMTで設定することに注意してください。

service: test-app

provider:
    name: aws
    region: ap-northeast-1
    runtime: provided

plugins:
    - ./vendor/bref/bref

functions:
    artisan:
        handler: artisan
        timeout: 120 # in seconds
        layers:
            - ${bref:layer.php-73}
            - ${bref:layer.console}
        events:
          - schedule:
              rate: cron(0/5 0-8 ? * MON-FRI *) # GMT
              input: '"croncmd:exec"'

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Laravel】whereHasでリレーションのネスト先を検索条件として指定する方法。

自分用のメモとして残します。

リレーションのネスト先。
言い方を変えるとリレーション先のリレーション?のフィールドをwhereHasで検索する方法です。

■やり方

リレーションの定義は割愛させていただきます。
withと同じようにピリオドでリレーションのチェーンをします。

$query->whereHas('user.phone', function($query) use($cond) {
    $query->where('phonename', $cond['phonename']);
});

 

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Docker】Todoリスト作成時に詰まったところ

環境:Mac
   Laravel 6.x系
   Mariadb

【Docker】dbコンテナに入り、データを見ると日本語が???で表示される

https://qiita.com/n_oshiumi/items/cfe91c60730f602b38eb
こちらの記事を参考にしましたが、私の場合は以下のエラーが発生し、解決できなかった。

E: Unable to locate package language-pack-ja-base
E: Unable to locate package language-pack-ja

そこで上記エラーを検索しまくり、やっと以下の記事にたどり着いた。
https://www.atmarkit.co.jp/ait/articles/1806/28/news043.html

結論としては、先に [apt update] をすることで、[language-pack-ja-base]らがインストール可能になる。

root # apt update
root # apt-get install language-pack-ja-base language-pack-ja
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Docker】dbコンテナに入り、データを見ると日本語が???で表示される

環境:Mac
   Laravel 6.x系
   Mariadb

https://qiita.com/n_oshiumi/items/cfe91c60730f602b38eb
こちらの記事を参考にしましたが、私の場合は以下のエラーが発生し、解決できなかった。

E: Unable to locate package language-pack-ja-base
E: Unable to locate package language-pack-ja

そこで上記エラーを検索しまくり、やっと以下の記事にたどり着いた。
https://www.atmarkit.co.jp/ait/articles/1806/28/news043.html

結論としては、先に [apt update] をすることで、[language-pack-ja-base]らがインストール可能になる。

root # apt update
root # apt-get install language-pack-ja-base language-pack-ja
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Laravel gmail Connection could not be established with host smtp.gmail.com 原因と対策

laravelでメールを送りたい

gmailを使おうとすると

Connection could not be established with host smtp.gmail.com :stream_socket_client(): SSL operation failed with code 1. OpenSSL Error

というエラーが発生するようになった。
ちょっと前までは同じ設定でうまく言っていたのに突然使えなくなった。

設定確認

laravel

\.env
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=xxxx@gmail.com
MAIL_PASSWORD=xxxx
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=xxxx@gmail.com
MAIL_FROM_NAME=xxxx@gmail.com

gmail

安全性の低いアプリは許可
https://myaccount.google.com/lesssecureapps

原因は?

アバスト無料アンチウイルスのスキャンでした。:sweat_smile:
image.png
設定から送信メールのスキャン(smtp)を外せば解決しました。
image.png

フリーソフトに紛れ込むことが多いアバストアンチウイルスですが
こいつがメールをスキャンするから失敗するようになっていたのでした。
不要な人はアンインストールでも解決するでしょうね。
誰かの参考になれば幸いです。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

TwitterOAuthを使用してフォロー,RT,いいねをする

前提

https://twitteroauth.com/
のドキュメントを参考にcomposerからインストール
https://developer.twitter.com/
から申請しAPIキーを取得

(最低限の)前提知識

スクリーンネームとユーザーID
・スクリーンネーム -> @hogehoge 的なID,いつでも変更できる
・ユーザーID -> 絶対に変えられないID  ※今回はユーザーIDを利用する
・API(アプリケーションインターフェース) -> 認可サーバーのID
・アクセストークン ->twitterが出した「ここまでの範囲なら利用していいよ!」ってやつ
詳しくはhttps://booth.pm/ja/items/1296585
の書籍を参考にしてください

test.php
<?php
require "vendor/autoload.php";
use Abraham\TwitterOAuth\TwitterOAuth as TwitterOAuth;

$consumerKey       = "#########";
//APIキーを記述
$consumerSecret    = "######################################";
//シークレットAPIキーを記述
$accessToken       = "############################################";
//自分もしくは他人のアクセストークン
$accessTokenSecret = "###########################################";
//自分もしくは他人のシークレットアクセストークン

$twitter = new TwitterOAuth($consumerKey, $consumerSecret, $accessToken, $accessTokenSecret);



$id ='################';
//いいね、RT対象のstatusIDを記述
$user_id ='#####################';
//フォローする対象のユーザーIDを記述

$retweet = $twitter->post('statuses/retweet',['id' => $id]);
//RTする
$favorites = $twitter->post('favorites/create', ['id' => $id]);
//いいねする
$follow = $twitter->post('friendships/create', ['user_id'=> $user_id]);
// フォローする
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

laravel SQL確認用

SQL確認用

preg_replace_array('/\?/', $query->getBindings(), $query->toSql())

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む