Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 12.03.2016 17:37:10

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Вопрос от новичка не могу вывести в шаблоне результат raw select

Всем привет!
Изучаю 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 писать..
Все возможности фреймворка трудно сразу освоить и возможно и не нужны, но хочется хотя бы шаг в направлении сделать и получить каркас для проекта...
Как думаете реально за неделю на таком уровне разобраться?

Не в сети

#2 12.03.2016 18:22:46

Re: Вопрос от новичка не могу вывести в шаблоне результат raw select

У вас форич возвращает объекты. А вы к ним как к массивам обращаетесь.

Изменено potMaster (12.03.2016 18:27:05)

Не в сети

#3 12.03.2016 18:35:11

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопрос от новичка не могу вывести в шаблоне результат raw select

ага то есть при raw sql структура коллекции с результатами немного другая?

Не в сети

#4 12.03.2016 18:44:17

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопрос от новичка не могу вывести в шаблоне результат raw select

А по теорическим вопросам. Прежде всего сложные запросы и формы кто нибудь может подсказать простые практики, так же бы не углуюлятся сильно в active record orm итд.

Не в сети

#5 12.03.2016 19:41:00

htclog81
Откуда: Москва
Сообщений: 192
Сайт

Re: Вопрос от новичка не могу вывести в шаблоне результат raw select

>У вас форич возвращает объекты. А вы к ним как к массивам обращаетесь.

пофиксилось..

Не в сети

Подвал раздела