Как хранить чили хаммани-отношения через своего родителя в laravel?

я имею User,Questionа также File модель. У каждого пользователя есть много вопросов, и у каждого вопроса есть много файлов. Я определил эти отношения в этих моделях. Я хочу сохранить вопрос, содержащий несколько файлов. Я сохраняю вопрос через модель пользователя. Как хранить файлы одновременно, сохраняйте вопрос Я пишу этот код, но выдает ошибку.

Свойство [id] не существует в этом экземпляре коллекции.

Вот User модель:

 class User extends Authenticatable
{
use HasApiTokens,Notifiable;

protected $fillable = [
'name', 'email',
'family','username','phone',
'degree','major_id','field',
'university','image','password'
];

protected $hidden = [
'remember_token',
];

public function questions(){

return $this->hasMany(Question::class,'user_id');
}

public function majors()
{
return $this->belongsTo(Major::class,'major_id');
}
}

Question модель:

   class Question extends Model
{
protected $guarded=[];
protected $table = 'questions';

public function files()
{
return $this->hasMany('App\File','question_id');
}

public function courses()
{
return $this->belongsTo(Course::class,'course_id');
}
public function users()
{
return $this->belongsTo(User::class,'user_id');
}
}

File модель:

    class file extends Model
{
protected $guarded=[];
}

это store метод Question:

public function store(Request $request)
{
$rules=[
'suggest_price'=>'required|numeric',
'deadline'=>'required',
'user_id'=>'required',

];
$validation= \Illuminate\Support\Facades\Validator::make($request->all(),$rules);

if($validation->failed()){
return response()->json([
'success'=>true,
'message'=>'Invalid Input Data!',
'data'=>null
],400);
}

$user=User::find($request->user_id);
if(is_null($user)){
return response()->json([
'success'=>false,
'message'=>'This user is not exist!',
'data'=>null
],404);
}
$question=$user->questions()->create([
'title'=>$request->title,
'description'=>$request->description,
'status'=>$request->status,
'suggest_price'=>$request->suggest_price,
'deadline'=>$request->deadline,
'course_id'=>$request->course_id,
]);
$user->save();
if(!is_null($request->file())){
$format=$request->file('file')->getClientOriginalExtension();
$size=$request->file('file')->getSize();
$name='questionId-'.$question->id.'-userId '.$user->id.'.'.$format;

if($size>$this->MAX_SIZE_FILE){
return response()->json([
'success'=>false,
'message'=>'size of file is grater than max-size-file!'
],400);
}
$request->file('file')->move(public_path('files'),$name);

$file=new file();
$file->link=$name;
$file->format=$format;
$file->size=$size;
$fileId=$question->files()->save($file)->id;

$file->update(['link'=>'file '.$fileId.'-'.$name,]);
$question->save();
}
return response()->json([
'success'=>true,
'message'=>'update successfully',
'data'=>$user->questions->id,
],200);
}

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector