実現したいこと
usersテーブルに紐づいたdrillsテーブルと
drillsテーブルに紐づいたproblemsテーブルにデータを保存したい
テーブル構成は以下
PHP
1users 2 id - integer 3 name - string 4 5drills 6 id - integer 7 title - string 8 user_id - integer 9 10problems 11 id - integer 12 drill_id - integer 13 problem0 - string 14 problem1 - string 15 problem2 - string 16 problem3 - string 17 problem4 - string 18 problem5 - string 19 problem6 - string 20 problem7 - string 21 problem8 - string 22 problem9 - string
modelのコード
PHP
1 2namespace App; 3 4use Illuminate\Notifications\Notifiable; 5use Illuminate\Contracts\Auth\MustVerifyEmail; 6use Illuminate\Foundation\Auth\User as Authenticatable; 7 8class User extends Authenticatable 9{ 10 public function drills(){ 11 return $this->hasMany('App\Drill'); 12 } 13} 14
PHP
1 2namespace App; 3 4use Illuminate\Database\Eloquent\Model; 5 6class Drill extends Model 7{ 8 public function user(){ 9 return $this->belongsTo('App\User'); 10 } 11 12 Public function problems(){ 13 return $this->hasOne('App\Problem'); 14 } 15} 16
PHP
1 2namespace App; 3 4use Illuminate\Database\Eloquent\Model; 5 6class Problem extends Model 7{ 8 9 public function drill(){ 10 return $this->belongsTo('App\Drill'); 11 } 12} 13
drillRequestのコード(画面から入力されたデータの入力チェック用に作成)
PHP
1 2namespace App\Http\Requests; 3 4use Illuminate\Foundation\Http\FormRequest; 5 6class DrillRequest extends FormRequest 7{ 8 9 public function rules() 10 { 11 return [ 12 'title' => 'required|string|max:255', 13 'category_name' => 'required|string|max:255', 14 'problem0' => 'required|string|max:255', 15 'problem1' => 'nullable|string|max:255', 16 'problem2' => 'nullable|string|max:255', 17 'problem3' => 'nullable|string|max:255', 18 'problem4' => 'nullable|string|max:255', 19 'problem5' => 'nullable|string|max:255', 20 'problem6' => 'nullable|string|max:255', 21 'problem7' => 'nullable|string|max:255', 22 'problem8' => 'nullable|string|max:255', 23 'problem9' => 'nullable|string|max:255' 24 ]; 25 } 26} 27
controllerのコード
PHP
1namespace App\Http\Controllers; 2 3use Illuminate\Http\Request; 4use App\Drill; 5use App\Problem; 6use App\Category; 7use Illuminate\Support\Facades\Auth; 8use Illuminate\Database\Eloquent\Builder; 9use Illuminate\Support\Facades\DB; 10use App\Http\Requests\DrillRequest; 11 12class DrillsController extends Controller 13{ 14 public function create(DrillRequest $request){ 15 16 $drill = new Drill; 17 18 $problem = new Problem; 19 20 21 Auth::user()->drills()->save($drill->fill($request->all())); 22 $drill = Auth::user()->drills()->create(['name' => $request->input['title']]); 23 $drill->problems()->saveMany([ 24 new App\Problem(['problem0' => $request->problem0 ]), 25 new App\Problem(['problem1' => $request->problem1 ]), 26 以下problem9まで続く 27 ]); 28 }
$drillのデータの取得方法に間違いはないでしょうか?
problemsテーブルにsaveManyメソッドを使ってデータを保存しようとしていますが
方針に間違いはないでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。