Используемые функции:
all()
делает выборку всех полей, возвращает
объект класса collection.
select()
позволяет указать выбираемые поля.
dump() распечатывает массивы и объекты
dump() распечатывает массивы и объекты
Выведем
статьи из БД. Создадим модель.
Модели
располагаются в корне каталога app
Модель
именуется в единственном числе, исходя
из имени таблицы, которая формируется
во множественном числе.
Консоль:
cd
domains\minilaravel.loc
php
artisan make:model Article
Созданного
функционала модели достаточно:
namespace
App;
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
//
}
use Illuminate\Database\Eloquent\Model;
class Article extends Model
{
//
}
Идем
в App\Http\Controllers\Index.Controller.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
// пропишем доступ к моделе Articles
use App\Article;
class IndexController extends Controller
{
public function index() {
$header = 'Hello world!';
$message = 'This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.';
// $articles = Article::all(); // all() делает выборку всех полей, возвращает объект класса collection
// каждая запись представляет объект класса соответствующей модели
$articles = Article::select(['id', 'title', 'desc'])->get(); // select позволяет указать выбираемые поля
//dump($articles); // dump() распечатывает массивы и объекты
return view('page')->with(['message' => $message,
'header' => $header,
'articles' => $articles
]);
}
}
namespace App\Http\Controllers;
use Illuminate\Http\Request;
// пропишем доступ к моделе Articles
use App\Article;
class IndexController extends Controller
{
public function index() {
$header = 'Hello world!';
$message = 'This is a template for a simple marketing or informational website. It includes a large callout called a jumbotron and three supporting pieces of content. Use it as a starting point to create something more unique.';
// $articles = Article::all(); // all() делает выборку всех полей, возвращает объект класса collection
// каждая запись представляет объект класса соответствующей модели
$articles = Article::select(['id', 'title', 'desc'])->get(); // select позволяет указать выбираемые поля
//dump($articles); // dump() распечатывает массивы и объекты
return view('page')->with(['message' => $message,
'header' => $header,
'articles' => $articles
]);
}
}
Это
результат распечатки dump($articles);
Collection
{#174 ▼
#items: array:3 [▼
0
=> Article {#175 ▶}
1
=> Article {#176 ▼
#connection: "mysql"
#table: null
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#attributes: array:8 [▶]
#original: array:8 [▶]
#casts: []
#dates: []
#dateFormat: null
#appends: []
#events: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}
2
=> Article {#177 ▶}
]
}
Здесь
нас интересует свойство
#attributes: array:8 [▶]
#attributes:
array:8 [▼
"id" => 2
"title" => "Nice & Clean.
The best for your blog!\r\n"
"text" => "<p>Fusce
rutrum lectus id nibh ullamcorper aliquet. Pellentesque pretium
mauris et augue fringilla non bibendum turpis iaculis. Donec sit amet
nunc lorem. Sed f ▶"
"desc" => "<p>Fusce
rutrum lectus id nibh ullamcorper aliquet. Pellentesque pretium
mauris et augue fringilla non bibendum turpis iaculis. Donec sit amet
nunc lorem. Sed f ▶"
"alias" => "article-2"
"img" => "{"mini":"001-55x55.png
","max":"001-816x282.png
","path":"0081-700x345.jpg"}\r\n"
"keywords" => ""
"meta_desc" => ""
]
Далее
идем в вид \resources\views\
page.blade.php
@foreach()
- это директива в шаблонизаторе
blade
<!DOCTYPE
html>
<html
lang="en">
<head>
<meta charset="utf-8">
<title>Jumbotron Template for
Bootstrap</title>
<link href="{{
asset('css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ asset('css/jumbotron.css')
}}" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-inverse
navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand"
href="#">Project name</a>
</div>
<ul id="navbar" class="menu">
<li><a
href="https://laravel.com/docs">Documentation</a></li>
<li><a
href="https://laracasts.com">Laracasts</a></li>
<li><a
href="https://laravel-news.com">News</a></li>
<li><a
href="https://forge.laravel.com">Forge</a></li>
<li><a
href="https://github.com/laravel/laravel">GitHub</a></li>
</ul><!--/.navbar-collapse -->
</div>
</nav>
<!-- Main jumbotron for a primary marketing
message or call to action -->
<div class="jumbotron">
<div class="container">
<h1>{{$header}}</h1>
<p>{{$message}}</p>
<p><a class="btn btn-primary
btn-lg" href="#" role="button">Learn more
»</a></p>
</div>
</div>
<div class="container">
<!-- Example row of columns -->
<div class="row">
@foreach($articles as $article)
<div
class="col-md-4">
<h2>{{
$article->title }}</h2>
<p>{!!
$article->desc !!}</p> <!-- {!! отключают теги
-->
<p><a
class="btn btn-default" href="#"
role="button">Подробнее »</a></p>
</div>
@endforeach
<hr>
<footer>
<p>© 2016 Company, Inc.</p>
</footer>
</div> <!-- /container -->
</body>
</html>
Создадим макет.
Для
этого создадим папку layouts по
адресу \resources\views\layouts
И
в ней файл site.blade.php
<!DOCTYPE
html>
<html
lang="en">
<head>
<meta charset="utf-8">
<title>Jumbotron Template for
Bootstrap</title>
<link href="{{
asset('css/bootstrap.min.css') }}" rel="stylesheet">
<link href="{{ asset('css/jumbotron.css')
}}" rel="stylesheet">
</head>
<body>
<nav class="navbar navbar-inverse
navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand"
href="#">Project name</a>
</div>
<ul id="navbar" class="menu">
<li><a
href="https://laravel.com/docs">Documentation</a></li>
<li><a
href="https://laracasts.com">Laracasts</a></li>
<li><a
href="https://laravel-news.com">News</a></li>
<li><a
href="https://forge.laravel.com">Forge</a></li>
<li><a
href="https://github.com/laravel/laravel">GitHub</a></li>
</ul><!--/.navbar-collapse -->
</div>
</nav>
@yield('content') <!-- будет
подгружаться из page.blade.php-->
</div> <!-- /container -->
</body>
</html>
В
page.blade.php
@extends('layouts.site')
<!-- Наследует шаблон. Пишем через
точку. -->
@section('content')
<!-- директива секции контента -->
<!--
Main jumbotron for a primary marketing message or call to action -->
<div class="jumbotron">
<div class="container">
<h1>{{$header}}</h1>
<p>{{$message}}</p>
<p><a class="btn btn-primary
btn-lg" href="#" role="button">Learn more
»</a></p>
</div>
</div>
<div class="container">
<!-- Example row of columns -->
<div class="row">
@foreach($articles as $article)
<div class="col-md-4">
<h2>{{ $article->title }}</h2>
<p>{!! $article->desc !!}</p>
<!-- {!! отключают теги -->
<p><a class="btn btn-default"
href="#" role="button">Подробнее
»</a></p>
</div>
@endforeach
<hr>
<footer>
<p>© 2016 Company, Inc.</p>
</footer>
@endsection <!-- закрываем
директиву секции контента -->
Комментариев нет:
Отправить комментарий