🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

Q&A

解決済

1回答

1012閲覧

Laravel 1投稿(タイトル、説明文)複数 画像投稿

Suzuki-Yamato

総合スコア8

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Model

MVCモデルの一部であるModelはアプリケーションで扱うデータとその動作を管理するために扱います。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Eloquent

Eloquentとは、PHPフレームワークのLaravelに最初から含まれているORM(Object-relational mapping:オブジェクト関係マッピング)です。

0グッド

0クリップ

投稿2021/02/04 12:17

前提・実現したいこと

Laravel 6.0 にて、
管理画面より
1投稿 複数画像投稿
1:多
で登録出来るシステムを検討しています。

状況

不明で手が止まってしまいました。

該当のソースコード

Laravel 6.0 (Model) Post, image post.php class Post extends Model { // protected $fillable = [ 'title', 'content', 'description', 'created_at', 'updated_at', 'author_id', 'post_type' ]; public function images() { return $this->hasMany('App\image'); } } image.php class image extends Model { protected $fillable = ['post_id', 'caption', 'path']; public function post() { return $this->belongsTo('App\Post'); } } コントローラ PostController.php public function store(Request $request, $post_type) { $post = Post::create([ 'title' => $request->title, 'content' => $request->post_content, 'description' => $request->description, 'author_id' => $request->author_id, 'post_type' => $post_type, 'created_at' => $request->created_at, 'updated_at' => $request->updated_at, ]); for ($i = 1; $i <= 10; $i++) { if ($request->files->has("featured-image$i")) { $caption = isset($request->featured_caption{$i}) ? $request->featured_caption{$i} : ""; $object = image::create([ ''※ここで止まってしまいました。 ]) } } return redirect()->route('home', ['post_type' => $post_type]); }

不明点

post_id をいかにして登録するかを悩んでいます。
基本的な質問ですみません。

補足情報

少々みづらいですが、view も記載します。
@if($CPT[$post_type]['featured-image'])
<table class="table table-bordered">
<thead>
<tr>
<th></th>
<th>画像</th>
</tr>
</thead>
<tbody>
{{-- @for($i=0;$i<10;$i++) --}}
@for($i=0;$i<1;$i++)
<tr>
<td>{{$i+1}}</td>
<td>
<div id="image-holder{{$i+1}}"></div>
<div class="input-group" style="padding-top: 10px">
<div class="custom-file ">
<input type="file" class="custom-file-input" onchange="ValidateSize(this)" id="featured{{$i+1}}" name="featured-image{{$i+1}}" accept=".png, .jpg, .jpeg">
<label class="custom-file-label feature_text" for="featured{{$i+1}}" id="featured_text{{$i+1}}">ファイル選択</label>
@error("featured".($i+1)))
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="input-group-append">
<span class="input-group-text" style="cursor: pointer" id="featured_delete{{$i+1}}"><i class="fas fa-trash-alt"> </i>削除</span>
</div>

</div> <div class="form-group"> <label style="padding-top: 10px">キャプション</label> <textarea class="form-control" name="featured_caption{{$i+1}}" rows="3" placeholder="キャプションを入力してください ..."></textarea> </div> </td> </tr> @endfor </tbody> </table> @endif

アドバイスをどうかお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Postクラスにimages()というリレーションのメソッドが定義されているので、そのリレーションを使って以下のようにcreateメソッドを使うと、post_idは自動的にセットされると思います。

php

1 $object = $post->images()->create([ 2 'caption' => ... 3 'path' => ... 4 ]);

参考: Createメソッド

投稿2021/02/04 15:26

Lulucom

総合スコア1899

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問