use Illuminate\Database\Eloquent\Factories\Sequence;
public function run()
{
$list = ['secret1','secret2','secret3']; //получаем список данных;
shuffle($list); // Перемешиваем
Order::factory(20)
->state(new Sequence(function () use (&$list) {
return ['secret_id' => array_pop($list)];
}))
->create();
}
деплой с гита в 2 команды?
"scripts": {
"down": [
"php artisan down --render=\"errors::maintenance\" --retry=60 --status=503"
],
"up": [
"php artisan up"
],
"deploy": [
"composer down",
"php artisan optimize:clear",
"git reset HEAD --hard",
"git pull",
"composer install",
"php artisan migrate --force",
"npm ci",
"npm run build",
"php artisan optimize",
"composer up"
]
}
composer deploy
.<div data-src="image.jpg"></div>
и внутри него скриптом вставлять картинку, когда нужно.<img src="pixel.gif" data-src="image.jpg">
определять position относительно блока с position: relavive
$sql = "INSERT INTO admins (id, login, pass, name) VALUES ($id, '$login', '$pass', '$name')";
<div class="answer-block">
<button class="viewAnswer"> </button>
<button class="closeAnswer"></button>
<div class="answer-comment"> .... </div>
</div>
const answers = document.querySelectorAll('.answer-block');
answers.forEach(answer => {
const open = answer.querySelector('.viewAnswer'),
const close = answer.querySelector('.closeAnswer');
const comment = answer.querySelector('.answer-comment'),
open.addEventListener('click', function(){
comment.style.display = 'block';
open.style.display = 'none';
close.style.display = 'block';
});
close.addEventListener('click', function(){
comment.style.display = 'none';
open.style.display = 'block';
close.style.display = 'none';
});
});
<div class="slider-container">
<div class="slider">
<div class="slide"></div>
<div class="slide"></div>
<div class="slide"></div>
</div>
</div>
.slider-container {
width: 600px;
overflow: hidden;
display: flex;
justify-content: center;
}
.slider {
width: 900px;
}
interface IParser {
public function parse();
}
class Source1Parser implements Iparser {}
class Source2Parser implements Iparser {}
class Source3Parser implements Iparser {}
// где-то в программе
$source = 1;
$parser = match ($source) {
1 => new Source1Parser(),
2 => new Source2Parser(),
3 => new Source3Parser(),
}
$data = $parser->parse();
Route::middleware('admin')
->prefix('admin')
->name('admin.')
// ->namespace($this->namespace)
->group(base_path('routes/admin.php'));
Route::get('auth', 'AuthController@show')->name('auth');
<option value="{{ $category->id }}">{{ $category->name }}</option>
.reviews__slider .reviews__slide {
height: auto;
display: flex;
}
.reviews__item{
box-shadow: -1px 2px 15px 0px rgba(30, 35, 66, 0.15);
border-radius: 10px;
padding: 25px 25px 28px 25px;
margin: 15px;
display: flex;
flex-direction: column;
position: relative;
margin: 15px;
/* height: 100%; */
}
.reviews__slider .reviews__slide
потому что в кодпене стили слайдера перебивают. У себя просто подключите сначала стили слайдера, потом свои, и можно будет обойтись без повышенной специфичности. до 4х элементов