Open7
laravelとdmm apiを使ってアフィサイト作る

dmm-php-sdk
このライブラリを使ってみるとteratailで質問されているものと同じエラー発生
GuzzleHttp\Client::request(): Argument #3 ($options) must be of type array, string given, called in /work/vendor/guzzlehttp/guzzle/src/Client.php on line 92
下記のようにhttp_client_handlerにcurlを指定することでエラー回避できました。
$dmm = new \Dmm\Dmm([
"affiliate_id" => 'xxx',
"api_id" => 'xxx',
"http_client_handler" => 'curl'
]);

人気の作品(作者ごとにまとめて並べる
SELECT id, maker_id, maker_name, title, review_count, review_average, genre FROM (
SELECT *, maker->"$[0].id" as maker_id, maker->"$[0].name" as maker_name
FROM fanza_doujin_items
WHERE campaign IS NOT NULL
AND date >= "2020-01-01"
AND genre->"$[0].id" != 8
AND review_average >= 4
AND review_count >= 10
) as a
ORDER BY maker_id, review_count desc, review_average desc
人気の総集編
SELECT id, maker_id, maker_name, title, review_count, review_average, genre FROM (
SELECT *, maker->"$[0].id" as maker_id, maker->"$[0].name" as maker_name
FROM fanza_doujin_items
WHERE campaign IS NOT NULL
AND genre->"$[0].id" != 8
AND review_average >= 4
AND review_count >= 10
AND title LIKE "%総集編%"
) as a
ORDER BY maker_id, date asc
高評価の作者:
SELECT maker_id
, maker_name
, max(review_count) as max_review_count
, max(review_average)
, GROUP_CONCAT(REPLACE(image_large_url, ',', ',')) AS image_large_urls # 作者同じ作品をまとめ
, GROUP_CONCAT(REPLACE(affiliate_url, ',', ',')) AS affiliate_url # 作者同じ作品をまとめ
, COUNT(*) AS doujin_count # 作者の作品数
FROM (
SELECT *, maker->"$[0].id" as maker_id, maker->"$[0].name" as maker_name
FROM fanza_doujin_items
WHERE genre->"$[0].id" != 8 # CG・イラスト集除外
AND review_average >= 4 # 評価4以上
AND date >= "2020-01-01" # 2020年から販売開始された商品
ORDER BY review_count, review_average
) as a
GROUP BY maker_id
ORDER BY max_review_count desc

サブクエリを定義しているSQLをクエリビルダやEloquentクエリで記述するには困難なので
直接SQLを実行したいがpaginate使うとエラー発生。下記読んで解決
Call to a member function paginate() on array
mysqlのgroup_concatが途中で切れるので対応中。下記試してみたがうまくいかず
my.cnf直してdocker-composeで再起動かけたが変わらず。
MySQLのGROUP_CONCAT関数の結果が切れる事象の対策
my.cnfのパーミッションが適切でない場合、設定が有効にならないので修正
chmod 644 /etc/my.cnfに変えてdocker-compose restartで再起動かけて直った。
World-writable config file '/etc/mysql/conf.d/my.cnf' is ignored.

mysqlでのJSON検索
mysql5.7でどうか調査
JSON_CONTAINS(genre, '{"name": "制服"}')
結果としていくつ指定した要素があるか
JSON_SEARCH(genre, 'all', 'イラスト・CG集')
指定した文字列あればそのJSONパスを返す
JSON_UNQUOTE(JSON_EXTRACT(maker, "$[0].name"))
集計でJSONでまとめたいときは下記。このあたりまとめられてる資料なかなか見つからない
JSON_OBJECTAGG(content_id,JSON_OBJECT('campaign_title',campaign_title,'affiliate_url',affiliate_url,'image_large_url',image_large_url))
R18のtwitterアフィだとリンククリック約100件で1件報酬発生のイメージ

SELECT a.maker_id
, a.maker_name
, MAX(a.review_count) as max_review_count
, MAX(a.review_average) as max_review_average
, JSON_ARRAYAGG(a.genre) as genre
, COUNT(*) as doujin_book_count
, JSON_OBJECTAGG(content_id,JSON_OBJECT('campaign_title',campaign_title,'affiliate_url',affiliate_url,'image_large_url',image_large_url))
FROM (
SELECT review_count
, review_average
, REPLACE(maker->"$[0].id", '"', '') as maker_id
, JSON_UNQUOTE(JSON_EXTRACT(maker, "$[0].name")) as maker_name
, genre
, affiliate_url
, image_large_url
, content_id
, campaign->"$[0].title" as campaign_title
FROM fanza_doujin_items
) as a
GROUP BY a.maker_id, a.maker_name

bing chatgpt
- 抽象的な質問から気になる部分を深堀りして聞いていき情報をまとめていく
- 自分のユーザがどんな情報を欲してくるのかを考えて文章を作る
- 〇〇について何点か箇条書きで教えて→掘り下げた内容をPREP法で〇文字程度で→