Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Всем привет!
Изучаю laravel второй день, никогда раньше не пользовался фреймворками, но писал на чистом php около 10 лет.
Сделал тестовую страницу на которую пытаюсь вывести несколько записей из БД. Сначала делал все как везде пишут то есть через ORM и все работало.
Но затем захотел join'ить вторую табличку хотя бы в отношении один к одному, решил попробовать для начала raw sql
И вот что вышло
В модели
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use DB;
class Item extends Model
{
//
public function getItemsWithCpu()
{
$items = DB::select('select i.*, c.title as cputitle from items i join cpus c on i.cpuid=c.id');
return $items;
//return $this->hasOne('Cpu');
}
}
в контроллере
<?php namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Item;
use DB;
class HomeController extends Controller {
public function index(Item $itemModel)
{
//$items = array();
//$items[] = ["id" => 1, "name" => "продукт 1", "descr" => "Отличный продукт 1"];
//$items[] = ["id" => 2, "name" => "продукт 2", "descr" => "Отличный продукт 2"];
//$items = Item::all();
$items = $itemModel->getItemsWithCpu();
//dd($items);
$data = [
'title' => 'Каталог - список',
'pagetitle' => 'Каталог',
'subtitle' => 'Список продуктов',
'items' => $items
];
//dd($data);
return view("incs.itemlist", $data);
}
и в шаблоне
@extends('master')
@section('cont')
<h2>{{$subtitle}}</h2>
@foreach($items as $item)
<div><a href="/items/{{$item['id']}}">{{$item['title']}}</a></div>
@endforeach
@endsection
Пока данные получались просто через $items = Item::all(); все работало. А теперь ругается как я понимаю на foreach
FatalErrorException in
858e3d2b2b5779e85b41b79821e86c9637f363f2.php line 5:
Cannot use object of type stdClass as array
В dd() контроллере данные есть. Почему их нельзя обойти foreach, а чем можно?
И еще вопросы больше общетеоретические:
1) migration попробовал поразбирался. Таблицы создаются, столбцы добавляются, данные seed заполняются. Но... Думаю, а нужны ли они.
Системой контроля версий мы не пользуемся. Таблицы все равно видимо будем править руками в GUI через командную строку mysql итд.
Можно ли безболезненно от них отказаться? Не завязано ли что то во фремворке именно на их использование?
2) Ну и почти аналогичный вопрос про ORM, разумно ли от него отказаться, писать запросы на чистом sql в модели методы для определенных запросов на чистом sql создавать, а то и в контроллере.
Ну или как то смешивать оба подхода.. Более сложные запросы писать raw для второстепенных таблиц не делать модели, а просто включать и в join'ы подзапросы руками.
Что в этом случае важно не упустить?
3) Ну и насчет авторизации. Опять же хочется самому создать поля в users связанные таблицы итд. Опять же какие тут подводные камни?
В общем то использовать фреймворк решили ради эксперимента в одном небольшом новом проекте. Времени мало. Если ничего не получится, придется опять на чистом php писать..
Все возможности фреймворка трудно сразу освоить и возможно и не нужны, но хочется хотя бы шаг в направлении сделать и получить каркас для проекта...
Как думаете реально за неделю на таком уровне разобраться?
Не в сети
У вас форич возвращает объекты. А вы к ним как к массивам обращаетесь.
Изменено potMaster (12.03.2016 18:27:05)
Не в сети
ага то есть при raw sql структура коллекции с результатами немного другая?
Не в сети
А по теорическим вопросам. Прежде всего сложные запросы и формы кто нибудь может подсказать простые практики, так же бы не углуюлятся сильно в active record orm итд.
Не в сети
>У вас форич возвращает объекты. А вы к ним как к массивам обращаетесь.
пофиксилось..
Не в сети