hcan SchoolScore::lessons() yönteminiz Lesson değil HasOne yani Eloquent Builder dönüyor. Doğal olarak içerisinde createLessons() şeklinde bir yöntem yok.
Normalde yapmanız gereken şu:
$resSchoolScore = SchoolScore::create([
'first_exam_percent' => $request->input('lessonPerce.firstExam');
'second_exam_percent' => $request->input('lessonPerce.secondExam');
'total_average' => $request->input('totalAvg')
]);
foreach($request->input('lessons') as $lessonData) {
$resSchoolScore->lessons()->create([
'name' => $lessonData['name'],
'credit' => $lessonData['credit']
]);
}
Bir yapı içerisinde yapmak istiyorsanız birden fazla yolu var; benim tercihim servis olurdu:
class SchoolScoreService implements SchoolScoreServiceInterface
{
public function createFromRequest(Request $request): SchoolScore
{
$resSchoolScore = SchoolScore::create([
'first_exam_percent' => $request->input('lessonPerce.firstExam');
'second_exam_percent' => $request->input('lessonPerce.secondExam');
'total_average' => $request->input('totalAvg')
]);
foreach($request->input('lessons') as $lessonData) {
$resSchoolScore->lessons()->create([
'name' => $lessonData['name'],
'credit' => $lessonData['credit']
]);
}
return $resSchoolScore;
}
}
public function store(SchoolScoreStoreRequest $request)
{
$resSchoolScore = $this->schoolScoreService->createFromRequest($request);
// ...
}
Elbette hızlıca yazdığım bir örnek...