Skip to content

Instantly share code, notes, and snippets.

@jarektkaczyk
jarektkaczyk / default.conf
Created December 16, 2018 00:33
NGiNX Configuration for Vue-Router in HTML5 Mode
server {
listen 80 default_server;
listen [::]:80 default_server;
root /your/root/path;
index index.html;
server_name you.server.com;
<?php
Schema::table('clicks', function (Blueprint $table) {
$table->index('user_id');
$table->index(['user_id', 'date_clicked']);
$table->index(['user_id', 'date_clicked', 'ip']);
$table->index(['user_id', 'date_clicked', 'country']);
$table->index(['user_id', 'date_clicked', 'city']);
$table->index(['user_id', 'date_clicked', 'browser']);
@jarektkaczyk
jarektkaczyk / ExactMethodExpectation.php
Created July 16, 2018 15:24
PHPUnit - how to set expectations against exact methods calls
<?php
$mock = $this->createMock(SomeDependency::class);
$mock->expects($this->once())->method('firstMethod')->willReturn('something');
$mock->expects($this->once())->method('secondMethod')->willReturn('something else');
$cut = new SomeClass($mock)
$cut->act();
// how to ensure there's no method called other than the 2 above?
@jarektkaczyk
jarektkaczyk / SomeController.php
Created July 1, 2018 11:37
multi step validation in laravel
<?php
public function someController(Request $request)
{
// asumming ValidatesRequests trait in use we'll call $this->validate
$this->validate($request, [
// first set of rules
]);
@jarektkaczyk
jarektkaczyk / laravel-multiformat-response.php
Last active June 24, 2018 07:42
laravel multiformat response
<?php
Response::macro('multiFormat', function ($data, $html = '') {
if (request('format') == 'json') {
return $this->json($data);
}
if (request('format') == 'xml') {
if (!is_array($data) && !$data instanceof Arrayable) { /* 400 Bad Request*/ }
<?php
$ids = array_unique([1,2,3,4,5, ...]);
// relation() is HasMany
// check if all $ids belong to this parent model:
$parent_model->relation()->whereIn('id', $ids)->count() === count($ids)
// check if $ids match all of the children records:
<?php
// assuming you want to get conv where last message doesn't come from the OP
Coversation::where('author_id', '!=', function ($q) {
$q->select('author_id')->from('messages')->whereRaw('conversation_id = conversations.id')->latest()->limit(1);
})->get()
@jarektkaczyk
jarektkaczyk / laravel-regex-in-route-params.php
Last active May 15, 2018 12:20
regex in route parameters
<?php
// Do this (explicit routes are better):
Route::get('qualification', function () {/**/});
Route::get('qualification/{year}/{month}', function ($year, $month) {/**/});
// You could also do this (but don't in your case):
// @link https://laravel.com/docs/5.6/routing#parameters-regular-expression-constraints
Route::get('qualification/{year_month?}', function ($year_month = null) {
@jarektkaczyk
jarektkaczyk / tags.php
Last active May 6, 2018 08:11 — forked from AdrianKuriata/tags.php
This is optimization tags for ManyToMany relationship with Post model for attaching not existing tags.
public function store(Post $post)
{
$tags = [];
foreach ((array) request('tags') as $tag_name) {
$tags[] = Tag::firstOrNew(['name' => $tag_name]);
}
// a dla fanow adama wathana o jedna linijke mniej:
//
<?php
$user = User::find($user_id);
$user->branches->load([
'roles' => function ($q) use ($user_id) {
$q->where('permissions_users.user_id', $user_id);
},
'roles.permissions',
]);