Laravel по-русски

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

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

#1 06.11.2013 15:31:04

Eloquent ORM

Всем добрый день ознакомился со следующим материалом:
http://laravel.ru/docs/v4/eloquent
http://laravel.ru/articles/rees/eloquent
http://laravel.ru/docs/v4/controllers
http://laravel.ru/docs/v4/requests

У меня есть модель CHAT которая обращается к таблице chat в которой содержаться строки 'mid', 'ch','poz','time','message','private'
Также у меня есть контроллер  ChatController и страница с blade шаблоном chat.blade.php
Я ни как не могу понять как мне вывести на chat.blade.php через ChatController определенные столбцы из таблицы chat

Я уверен что ответ тривиально прост, но могли бы объяснить
заранее спасибо

Не в сети

#2 06.11.2013 20:09:42

vanchelo
Откуда: Украина, Киев
Сообщений: 32
Сайт

Re: Eloquent ORM

Если вы не создали модель для CHAT, то вот так

// ChatController.php
public function showChats() {
    $chats = DB::table('chat')->get(array('mid','ch'));

    return View::make('chat', array(
        'chats' => $chats
    ));
}

// routes.php
Route::get('chats', 'ChatController@showChats');

Не в сети

#3 06.11.2013 21:15:47

Re: Eloquent ORM

запрос от корня сайта: /chat
выведет вторую запись.

/app/models/Chat.php

<?php

class Chat extends Eloquent {

	protected $table = 'chat';

}

/app/controllers/ChatController.php

<?php

class ChatController extends Controller {

	public function index()
	{
		return View::make('chat')->with('rows',Chat::where('ch','=','ch 2')->get());
	}

}

/app/views/chat.blade.php

<!DOCTYPE html>
<html>
	<head></head>
	<body>
		@if(count($rows) > 0)
		<table cellspacing="0" cellpadding="0" border="1" width="100%">
			@foreach($rows as $row)
			<tr>
				<td>{{$row->id}}</td>
				<td>{{$row->mid}}</td>
				<td>{{$row->ch}}</td>
				<td>{{$row->poz}}</td>
				<td>{{$row->time}}</td>
				<td>{{$row->message}}</td>
				<td>{{$row->private}}</td>
			</tr>
			@endforeach
		</table>
		@else
		данных нет
		@endif
	</body>
</html>

/app/routes.php

<?php

Route::resource( 'chat', 'ChatController');

Таблица

--
-- Структура таблицы `chat`
--

CREATE TABLE IF NOT EXISTS `chat` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `mid` text NOT NULL,
  `ch` text NOT NULL,
  `poz` text NOT NULL,
  `time` text NOT NULL,
  `message` text NOT NULL,
  `private` text NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ;

--
-- Дамп данных таблицы `chat`
--

INSERT INTO `chat` (`id`, `mid`, `ch`, `poz`, `time`, `message`, `private`) VALUES
(1, 'mid 1', 'ch 1', 'poz 1', 'time 1', 'message 1', 'private 1'),
(2, 'mid 2', 'ch 2', 'poz 2', 'time 2', 'message 2', 'private 2'),
(3, 'mid 3', 'ch 3', 'poz 3', 'time 3', 'message 3', 'private 3');

Не в сети

#4 04.12.2013 10:06:38

Re: Eloquent ORM

Дабы не плодить однородные темы. В общем есть база, есть таблица todos в которой есть пара записей.
Контроллер TodoController.php:

<?php

class TodoController extends BaseController {
    public function showTodos() {
        View::make('todo')->with('todos', Todo::all());
    }
}

Модель Todo.php:

<?php

class Todo extends Eloquent {
    public $timestamps = false;
}

Шаблон todo.blade.php

<h1>TodoШечки:</h1><br />
@foreach ($todos as $todo)
    <p>todoID {{ $todo->id }}</p>
@endforeach

Маршрут:

Route::get('todo', 'TodoController@showTodos');

Перехожу по http://localhost/laravel/public/todo, а в ответ чистая страница, даже <h1>...</h1> заголовок не выводится. Пробовал передать ->with('test', 'привет') в шаблон, выводится нормально.

Изменено sumrok (04.12.2013 10:06:58)

Не в сети

#5 04.12.2013 10:15:04

Re: Eloquent ORM

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

Не в сети

#6 04.12.2013 10:20:11

Re: Eloquent ORM

В общем шаблон вообще ничего не выводит, даже если обычный текст в нем написать.

Не в сети

#7 04.12.2013 10:30:44

Re: Eloquent ORM

Моя невнимательность меня погубила, забыл про return smile))

Не в сети

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