За последние 24 часа нас посетили 22406 программистов и 1169 роботов. Сейчас ищут 677 программистов ...

Laravel работа с БД

Тема в разделе "PHP для новичков", создана пользователем AlexProg, 9 окт 2020.

Метки:
  1. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Парни, всем привет!

    Laravel
    Знакомлюсь, делаю, всё ок, но один момент не могу понять и не могу нагуглить.
    Направьте на путь истинный, пожалуйста.

    Получаю ошибку:
    В коде:
    PHP:
    1. result = $this->model->get();
    Но стоит сделать так:
    PHP:
    1. $result = DB::table('product')->get();
    Или так:
    PHP:
    1. $result = Product::where('status', 1)->get();
    Всё работает!
    Куда копать? Подскажите пожалуйста!

    PHP:
    1. <?php
    2.  
    3. namespace App\Http\Controllers;
    4.  
    5. use Illuminate\Database\Eloquent\Model;
    6. use Illuminate\Http\Request;
    7. use DB;
    8. use App\Product;
    9.  
    10. abstract class ApiController extends Controller
    11. {
    12.     /**
    13.      * @var Request
    14.      */
    15.     protected $request;
    16.  
    17.     /**
    18.      * @var Model
    19.      */
    20.     protected $model;
    21.  
    22.     /**
    23.      * @param Request $request
    24.      */
    25.     public function get(Request $request)
    26.     {
    27.         $limit = (int) $request->get('limit', 100);
    28.         $offset = (int) $request->get('offset', 0);
    29.  
    30.         $result = $this->model->limit($limit)->offset($offset)->get();
    31.         //$result = $this->model->get();
    32.         //$result = DB::table('product')->get();
    33.         //$result = Product::where('status', 1)->get();
    34.  
    35.         return $this->sendResponse($result, 'OK', 200);
    36.     }
    Модель:
    PHP:
    1. <?php
    2.  
    3. namespace App;
    4.  
    5. use Illuminate\Database\Eloquent\Model;
    6.  
    7. class Product extends Model
    8. {
    9.     protected $table = 'product';
    10.  
    11.     protected $filltable = [
    12.         'product_id',
    13.         'product_name',
    14.         'category_id',
    15.         'price',
    16.         'status',
    17.     ];
    18.  
    19.     protected $visible = [
    20.         'product_id',
    21.         'product_name',
    22.         'category_id',
    23.         'price',
    24.         'status',
    25.     ];
    26.  
    27.    
    28. }
    Контроллер:
    PHP:
    1. <?php
    2.  
    3. namespace App\Http\Controllers;
    4.  
    5. use App\Application;
    6. use App\Http\Request\ProductRequest;
    7. use App\Product;
    8.  
    9. class ProductController extends ApiController
    10. {
    11.     public function __constructor(Product $model, ProductRequest $request){
    12.         $this->model = $model;
    13.         $this->request = $request;
    14.     }
    15.  
    16.  
    17. }

    С меня + жирный в кармЫ! ):
     
  2. acho

    acho Активный пользователь

    С нами с:
    28 дек 2016
    Сообщения:
    854
    Симпатии:
    210
    Адрес:
    Санкт-Петербург
    Для начала расскажи, что ты пытался сделать в неработающем коде и с чего ты взял, что оно так должно работать.
     
    AlexProg нравится это.
  3. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Из какой документации вы это взяли? Зайдите на официальный сайт и почитайте...
     
    AlexProg нравится это.
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.076
    Симпатии:
    1.237
    Адрес:
    там-сям
    Это означает, что $this->model содерждит null (не инициировано). Внезапно™
    Мы без понятия что это за свойство и почему оно не инициировано. Это вопрос к тебе, а не к Laravel.
     
    AlexProg нравится это.
  5. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    Rest API, а конкретно работа с БД.

    Сылки можно оставлять? https://bitbucket.org/teise/rest-api-service-with-laravel/src/master/
    Ещё на ютубе у него ролик.
    --- Добавлено ---
    Сылки можно оставлять? https://bitbucket.org/teise/rest-api-service-with-laravel/src/master/
    Ещё на ютубе у него ролик.

    Так и сделал, работает. Вот как в примере по ссылке не хочет.
     
  6. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    UP: Забить на тот код? Делать по мануалу ларки?
     
  7. twim32

    twim32 Активный пользователь

    С нами с:
    29 мар 2017
    Сообщения:
    275
    Симпатии:
    58
    Вы можете делать все что угодно. Но учитывая, что Ляравель - это не самая ваша сильная сторона, да и в ошибках вы плаваете, я бы на вашем месте не стал отходить от стандартов.
     
    AlexProg нравится это.
  8. AlexProg

    AlexProg Активный пользователь

    С нами с:
    13 май 2014
    Сообщения:
    320
    Симпатии:
    7
    @twim32 Вот вот. Хочет делать согласно стандартов.