Как создать контроллер для данных в laravel? - PullRequest
0 голосов
/ 03 июля 2018

Вот текущий код, который у меня есть для модели:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Courses extends Model
{
    protected $table = 'courses';

    foreach ($courses as $course) {
        echo $course->course;
    }
}

Это правильно закодировано? Данные выбираются из таблицы «курсы», а «столбцы» - это название столбца.

Я добавляю новую функцию в свой каталог поиска. Профили содержат переменные из базы данных, поэтому из одной таблицы базы данных извлекается много данных. Однако есть одна информация, которая помещается в отдельную таблицу, потому что она не может вписаться в ту же таблицу, что и другие данные. Поэтому мне нужно найти способ извлечь эти данные из другой таблицы базы данных и поместить их в код профиля.

Вот контроллер страницы профиля (фрагмент, который управляет видом):

//view school
public function viewschool ($url){
   $url ='schools/' . $url;
    if (count(School::where('url', '=', $url)->first()) <> 1 ) {
        return redirect()->back();
    }

    $sch = School::where('url', '=', $url)->first();
    $articles = posts::where('post_type','article')->where('school',$sch->name)->take(3)->get();
    $news = posts::where('post_type','news')->where('school',$sch->name)->take(3)->get();
    $others = posts::where('post_type','news')->take(3)->get();

    return view('school-info')
        ->with(array('sch' => $sch,'school_articles' => $articles,'school_news' => $news,'others' => $others));
}

Новые данные - школьные курсы. таблица базы данных для курсов содержит столбцы для идентификатора школы (в основном курсы соответствуют идентификатору названия школы, которому они принадлежат в таблице школ), а также другие данные, такие как продолжительность курса и обучение.

Интересно, как мне создать код контроллера для школьных курсов?

1 Ответ

0 голосов
/ 04 июля 2018

Итак, сначала улучшите ваше понимание Модели в Laravel. Вы просто определяете свойства для своих классов там. foreach совершенно неуместен.

Пример модели должен выглядеть следующим образом:

<?php
 namespace App;

 use Illuminate\Database\Eloquent\Model;

 class Course extends Model 
 {

 protected $table = 'courses';

 protected $fillable = ['properties'];

 }

Итак, вы бы начали с «свежей» и готовой к использованию модели. Каждое действие с вашей моделью вы делаете внутри вашего контроллера. Но запросы к БД вы делаете внутри репозитория.

А теперь по вашему вопросу:

Вы можете определить отношения в моделях, например,

protected $searchable = 
[
     'relations' => [
            'schools' => [
                  'foreignKey' => 'school_id',
                  'foreignField' => 'courses'
                          ]
                     ]
]

Редактировать: забыл метод внутри модели: D

public function schools(): BelongsTo
{
  return $this->belongsTo(Schools::class);
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...