И еще одна не очень удачная попытка трудоустройства.
Автор: Jon
Удаленное собеседование на должность Laravel-PHP-программиста.
Собеседование на должность laravel-php-разработчика проводилось в формате
скайп конференции (текстом) 13.07.2017. С той стороны - ТимЛид и Старший Менеджер проекта.
Менеджер:
вопросы, которые мы зададим довольно простые и призваны показать нам ваш
реальный уровень. Для ответа на каждый вопрос у вас есть по 5 минут.
Больше - считаем, что ответа ты не знаешь. Если все-таки нужно
больше на пару минут, чтобы закончить мысль - это допускается, но об этом
нужно предупредить, в течение первых 5 минут. Все вопросы на Laravel.
итак готов?
мой ответ
Да:
Менеджер:
поехали
-------------------------------------------------------------------------------------------------
Нужно добавить несколько полей в таблицу actual_lics. Именно:
title VARCHAR(150) DEFAULT NULL
some_date DATE NOT NULL
как ты бы это сделал ?
Это оказался единственный вопрос, ответ на к-рый я более менее знал.
1) создать "правильную" миграцию, те такую, в которой уже есть
правильный шаблон (костяк) функции up():
php artisan make:migration change_actual_lics_table --table=actual_lics
2) если сделан пп 1, то в функцию up() добавить всего 2 строки кода. В итоге ф-ция up() :
public function up()
{
Schema::table('actual_lics', function (Blueprint $table) {
$table->string('title',150)->default(null); //1-ая добавленная строка.
$table->date('some_date'); // 2-ая...
});
}
3) запустить миграцию: php artisan migrate
--------------------------------------------------------------------------------------------------------------------------
Менеджер:
хорошо, следующий вопрос...
Имеется таблица, в которой несколько столбцов (скажем 15) типа DATE. Этот тип хранится
в базе в виде yyyy-mm-dd. Нужно чтобы в приложении выводился другой вид дат(dd-mm-yyyy, dd.mm.yyyy
или какой-то другой - в целом не важно). Как бы ты это сделал на Laravel? Код писать не надо, просто мысли.
мой ответ
Везде во вьюхе, где есть вывод дат вместо {$article->created_at} написать {$article->created_at->format('dd-mm-yyyy')
... либо пишется функция, возвращяющ дату в нужном формате..
ТимЛид
А если у нас много вьюх, и на каждой вьюхе даты? Писать в каждой формат?
мой ответ
нет... надо в модели создать функцию, типа setDateAttribute($date) которая, должна вернуть нужный формат даты...
в ней должно быть что-то типа {return ......->format('dd-mm-yyyy')}
и вывод должен быть в нужном формате...
ТимЛид
А если моделей с датами много? В каждой прописывать setDateAttr?
мой ответ: по идее да ...
Менеджер:
ок, хорошо, хватит обсуждения по этому вопросу.
Много потратили времени, следующий вопрос.
----------------------------------------------------------------------------------------------------------------------
PS. На этом вопросе, тогда мне походу поставили минус :) сегодня я знаю точный ответ :
в файле AppServiceProvider.php, добавить:
use Carbon\Carbon;
в методе boot() , добавить строку
Carbon::setToStringFormat('d.m.Y');
И в модели таблицы прописать массив :
protected $dates = [ 'и тут указать', 'все эти', '15 дат' ];
----------------------------------------------------------------------------------------------------------------------
ТимЛид:
Есть переменная $article класса Article. В ней есть связь author на модель Author, в ней связь country
на модель Country, в ней поле name. Связи многие-к-одному и они уже прописаны в моделях. Тебе надо
достать имя страны, из которой происходит автор статьи из модели Article(переменной $article). В базе не
прописан CONSTRAINT, так что возможен вариант, когда связанной записи нету. Как бы ты достал значение
на Laravel? Тут бы можно уже код.
мой ответ:
чуть больше времени...
$author = $article->author;
$country = $article->author->country;
$countryName = ($author && $country) ? $article->author->country->name : 'Страна автора неизвестна';
ТимЛид:
$article->author->country;
Это кинет нотайс
мой ответ:
try ($article->author->country) ...
ТимЛид:
а без try?
мой ответ:
isset($article->author, $article->author->country);
ТимЛид:
а без isset?
мой ответ:
ну не знаю....сдаюсь...
----------------------------------------------------------------------------------------------------------------------
PS ...правильный ответ был близко - одной строкой :
$countryName = $article->author && $article->author->country ? $article->author->country->name : null;
и это чистый PHP и этот ответ одинаков для Yii && Laravel :(
----------------------------------------------------------------------------------------------------------------------
ТимЛид:
У меня больше вопросов нет.
Менеджер:
спасибо за твое время,
я чуть позже напишу.
----------------------------------------------------------------------------------------------------------------------
PS. На след день мне отписали, что уровень слабоват, надо еще учиться...:::(((
В этой организации при собеседовании на Yii задаются ровно те-же вопросы,
только окончание вопроса звучит - как бы ты сделал это на Yii.
Комментарии о School-PHP (0):