Заметки

Проблема - по дефолту система пытается найти файл по “двойному” пути: “/c/GitLab-Runner/C:/GitLab-Runner/builds/… CI_SERVER_TLS_CA_FILE” и в итоге выдает ошибку: No such file or directory

Решение: поменять путь до working-directory.

В теории все просто, а на практике пришлось потратить достаточно много времени, чтобы выяснить, как это правильно записать. 

При этом очень важно, как именно пропишите путь. К примеру просто “C:\GitLab-Runner\builds” не сработало (и другие похожие вариации на эту тему). 

Правильно будет так:

builds_dir = "/c/GitLab-Runner/builds"

[runners.custom_build_dir]
enabled = true

В некоторых системах может помочь такая запись: 

builds_dir = "//c/GitLab-Runner/builds"

Чем заменить SQL_CALC_FOUND_ROWS?

С применением SQL_CALC_FOUND_ROWS  код выглядит примерно так:

SELECT SQL_CALC_FOUND_ROWS * FROM table WHERE quantity > 50 LIMIT 30;
SELECT FOUND_ROWS();

Этот же код без SQL_CALC_FOUND_ROWS:

SELECT * FROM table WHERE  quantity > 50 LIMIT 30;
SELECT COUNT(*) FROM table WHERE quantity > 50;

Смысл в том, что сначала делается запрос с лимитом, а затем - COUNT(*), но уже без ограничений. 

Во время использования тестов 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);