Модель — объект определенного
класса, в свойствах которого отображаются
данные полей таблицы.
Модели
находятся в папке app.
Имя
модели должно быть в единственном числе
и совпадать с таблицей БД.
Создадим модель через
консоль: php artisan make:model
Page
Если
мы создаем модель, то мы можем сразу
создать миграцию к данной модели, т.е
таблицу в БД.
php artisan make:model Test --migration
или записать в более короткой
форме: php artisan make:model Test —m
Родительская модель описана
по адресу:
vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php
Рассмотрим свойства,
которые можно переопределять в классе
модели.
protected $table = 'articles'; // указываем
имя таблицы БД. Это необязательное
свойство, если имя модели совпадает с
именем таблицы.
protected $primaryKey = 'id'; // По умолчанию это id. Если это не так, то нужно указать поле.
public $incrementing = FALSE; // Автоинкремент.
public $timestamps = FALSE; // Если не нужно хранить дату создания и обновления.
Как выбирать данные из базы?
Откроем контроллер
\app\Http\Controllers\Admin\Core.php
Подключим модель: use
App\Article;
Получим все статьи:
public function getArticles() {
$articles = Article::all();
dump($articles);
}
Метод all() возвращает коллекцию моделей. В свойстве attributes возвращаются наши поля из БД.
public function getArticles() {
$articles = Article::all();
dump($articles);
}
Метод all() возвращает коллекцию моделей. В свойстве attributes возвращаются наши поля из БД.
Чтобы
получить доступ непосредственно к
данным?
Можно обойти в цикле данную
коллекцию.
public function getArticles() {
$articles = Article::all();
// в цикле мы пройдемся по отдельным моделям
foreach($articles as $article) {
echo $article->name.'<br />';
}
dump($articles);
}
Выводит имена статей.
$articles = Article::all();
// в цикле мы пройдемся по отдельным моделям
foreach($articles as $article) {
echo $article->name.'<br />';
}
dump($articles);
}
Выводит имена статей.
Используем
конструктор запросов:
Выберем статьи, у которых id
больше 3.
public function getArticles() {
$articles = Article::where('id', '>', 3)->get();
dump($articles);
}
$articles = Article::where('id', '>', 3)->get();
dump($articles);
}
Или
комбинируем методы:
public function getArticles() {
$articles = Article::where('id', '>', 3)->orderBy('name')->take(2)->get();
dump($articles);
}
$articles = Article::where('id', '>', 3)->orderBy('name')->take(2)->get();
dump($articles);
}
Используем
порционную выборку:
Article::chunk(2, function($articles) {
});
});
Выбор
одной определенной записи:
public function getArticles() {
$articles = Article::find(1); // выборка записи с id = 1
echo $articles->text; // выводит текст записи
dump($articles);
}
$articles = Article::find(1); // выборка записи с id = 1
echo $articles->text; // выводит текст записи
dump($articles);
}
Выберем
одну запись другим методом:
public function getArticles() {
$articles = Article::where('id', 1)->first();
echo $articles->text;
dump($articles);
}
С методом find мы можем передать массив идентификаторов.
$articles = Article::where('id', 1)->first();
echo $articles->text;
dump($articles);
}
С методом find мы можем передать массив идентификаторов.
Это вернет коллекцию моделей.
public function getArticles() {
$articles = Article::find([1,2,3]);
dump($articles);
}
$articles = Article::find([1,2,3]);
dump($articles);
}
Запрос: "select * from `articles` where `articles`.`id` in
(?, ?, ?)"
Используем метод findOrFail
public
function getArticles() {
$articles = Article::findOrFail(1);
dump($articles);
}
Запрос: "select * from `articles` where `articles`.`id` = ? limit 1"
$articles = Article::findOrFail(1);
dump($articles);
}
Запрос: "select * from `articles` where `articles`.`id` = ? limit 1"
Если мы попробуем найти
статью, которой нет, то будет сгенерированно
исключение:
No query results for model [App\Article] 100
Аналог findOrFail
- firstOrFail
public function
getArticles() {
$articles = Article::where('id', 1)->firstOrFail();
dump($articles);
}
$articles = Article::where('id', 1)->firstOrFail();
dump($articles);
}
Запрос: "select * from `articles` where `id` = ? limit 1"
Создадим
новую запись. Вставим запись в БД.
public function getArticles() {
$article = new Article; // создадим объект новой модели
$article->name = 'New Article'; // запишем значение в поле имя
$article->text = 'New Article Text'; // запишем значение в поле text
$article->img = 'new.jpg';
$article->save(); // сохраним данные в БД
$articles = Article::all(); // выберем все статьи
dump($articles);
}
$article = new Article; // создадим объект новой модели
$article->name = 'New Article'; // запишем значение в поле имя
$article->text = 'New Article Text'; // запишем значение в поле text
$article->img = 'new.jpg';
$article->save(); // сохраним данные в БД
$articles = Article::all(); // выберем все статьи
dump($articles);
}
Запрос: "insert into `articles` (`name`, `text`, `img`) values (?, ?, ?)" Обновим информацию в БД. Метод save() пересохранит данные. public function getArticles() { $article = Article::find(13); // без new, т.к мы создаем не пустую модель $article->name = 'New Article2'; // переопределим значения $article->text = 'New Article Text2'; $article->img = 'new2.jpg'; $article->save(); // сохраним данные в БД $articles = Article::all(); // выберем все статьи dump($articles); } Запрос: "update `articles` set `name` = ?, `text` = ?, `img` = ? where `id` = ?"
Комментариев нет:
Отправить комментарий