Место, чтобы сделать основные функции Laravel - PullRequest
0 голосов
/ 08 июня 2018

Я довольно новичок в laravel, и я искал в Интернете и документации по laravel ответ, но ничего не было.

Мой способ программирования - создать "основной" класс функцийдля таблиц базы данных, например, создание класса с основными функциями для пользователей, поэтому я называю этот класс «UsersService» и есть такие функции, как вставка обновления и получения, или, если у меня была таблица платежей, поэтому я создаю новый класс, который использует только эту таблицуи назовите его «PaymentsService» со всеми необходимыми мне функциями.

Я искал что-то подобное с laravel, но на самом деле не нашел ответов ... Так что, ребята, где лучший способсделать такую ​​вещь на личинке?в контроллере или модели?

Или, если бы у вас, ребята, был какой-то лучший способ сделать что-то подобное, было бы здорово!:)

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Контроллер - это то место, где я храню всю основную логику, а модель - то, куда я кладу вещи, связанные с ним.Как, например, у меня есть программа с контроллером инцидентов, в которой выполняются все мои основные функции, и модель инцидентов, в которой определяются мои отношения «один ко многим» с другими моделями, а также вызывается класс уведомлений при создании нового инцидента.Код размещен ниже.

Incidents.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Notifications\Notifiable;
use App\Notifications\IncidentCreatedNotification;

class Incident extends Model
{

    use Notifiable;

    protected static function boot(){

        parent::boot();

        self::created(function($model){
            $model->notify(new IncidentCreatedNotification());
        });
    }

    //Table Name
    protected $table = 'incidents';

    //Primary Key
    public $primaryKey = 'id';

    public function user(){
        return $this->belongsTo('App\User');
    }
    public function status(){
        return $this->belongsTo('App\Status');
    }
    public function incidentNotes(){
        return $this->hasmany('App\IncidentNotes');
    }

    public function routeNotificationFor($driver){
        //dd(openssl_get_cert_locations());
        //dd(config('app.slack_webhook'));
        return config('app.slack_webhook');
    }

}

IncidentsController.php (удалена логика)

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use App\Incident;
use App\IncidentNotes;
use Validator;

class IncidentsController extends Controller
{

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {

    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {

    }

    /**
     * Destroys the Incident 
     *
     */
    public function destroy($id)
    {

    }

}

Что помогло мне лучше понять laravel:

Laracasts- https://laracasts.com/skills/laravel

серия Laravel с нуля- https://www.youtube.com/watch?v=EU7PRmCpx-0&list=PLillGF-RfqbYhQsN5WMXy6VsDMKGadrJ-&index=1

0 голосов
/ 08 июня 2018

Вы говорите о паттерне Active Record.Laravel использует Eloquent ORM .

Тогда вы можете использовать модель в вашем контроллере, например:

class BlogController extends Controller {

    public function index()
    {
        $posts = Posts::all()->toArray();
    }
}

Хотя я предпочитаю шаблон Data Mapper, используемый Doctrine ORM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...