Заметки

Во время использования тестов Laravel Dusk иногда полезно глазами посмотреть, что происходит в браузере. Сделать это достаточно просто.

Достаточно закомментировать режим '--headless'. Для стандартного тестового случая это находится по адресу:

\Tests\DuskTestCase::driver

Пример:

      $options = (new ChromeOptions)->addArguments(collect([
$this->shouldStartMaximized() ? '--start-maximized' : '--window-size=1920,1080',
])->unless($this->hasHeadlessDisabled(), function ($items) {
return $items->merge([
'--disable-gpu',
// '--headless',
]);
})->all());

Если вы пробуете сделать запрос в таком виде:

SELECT name:en 
FROM planet_osm_polygon poly
WHERE …

И получаете такую ошибку:

ERROR: syntax error at or near ":"

То решить ее достаточно просто, достаточно заключить проблемное название колонки в двойные кавычки:

SELECT "name:en" 
FROM planet_osm_polygon poly
WHERE …

Если при применении плагина по контролю за видимостью колонок надо узнать, какие колонки у пользователя видны, а какие- нет, можно воспользоваться этим кодом: 

var myTable = $('.table').DataTable(datatableParams);
//...
var info = myTable.columns().visible();
console.log(info);

где datatableParams - параметры инициализации DataTable 

К примеру есть такой CSS с media query:

@media all and (max-width: 850px) {

#myblock{
background: #ff0000;
}
}

И если он правильно подключен к странице, но вдруг не работает, то проверьте, есть ли в html страницы такой код: 

<meta name="viewport" content="width=device-width, initial-scale=1.0">

При условии, что на странице DataTable в единственном экземпляре:

$('.mydatatable').on( 'init.dt', function () {
console.log( $.fn.dataTable.tables()[0].id );
} );

На самом деле используя $.fn.dataTable.tables() можно пройтись по всем DataTable, инициализированным на странице. Только это надо делать после полной загрузки страницы, в данном случае событие поставлено после завершения инициализации DataTable и мы уже знаем ее класс (поэтому практического смысла тут нет,просто приведено ради примера)

Иногда необходимо предпринять какие-либо действия, когда пользователь что-то фильтрует в DataTable. 

С этим поможетакой код:

$('#myDatatable ').on( 'search.dt', function () {
//do something
} );

При myDatatable этом объявлен где-то ранее в коде:

new DataTable('#myDatatable');

Если необходимо сделать что-то после того, как DataTable будет инициализирован, то подойдет следующий код:

$('#myDatatable').on( 'init.dt', function () {
//do something
} );

При myDatatable этом объявлен где-то ранее в коде:

new DataTable('#myDatatable');

Если необходимо с помощью jQuery получить содержимое таблицы DataTables, при этом убрав все отфильтрованное, это можно сделать следующим образом:

var table = $('.dataTable').DataTable();
var rows = table.rows( { search:'applied'} ).data();
console.log(rows); // результат

Допустим есть класс Test

У него есть отношение:

public function types()
{
return $this->belongsToMany(TestType::class, 'test_type_connection', 'test_id', 'type_id');
}

Теперь проверим, есть ли у объекта Test тип с type_id = 1:

  $test  = Test::find(67); 
$exists = $test->types->contains(1);
var_dump($exists);

Эта ошибка значит, что на текстовое поле (или на поле с типом BLOB) необходимо при добавлении индекса указать размер, сколько необходимо индексировать.

Пример: 

ALTER TABLE `test`
ADD INDEX `test1` (`text_field`(50), `other_field`);

В данном случае (50) - указание размера. 

Если укажете слишком большой размер - рискуете получить другую ошибку - “Specified key was too long; max key length is 1000 bytes”.

Иногда необходимо убрать автофокус с первого элемента формы, к примеру во всплываюшем окне (или в любом другом месте).

Сделать это просто. 

Достаточно просто добавить такой скрытый элемент:

<input type="hidden" autofocus="true" />