Yay, so I found myself with some time on my hands. Browsing jobs on upwork I found someone needing an excel export for some user data. That made me remember my last excel project and how complicated it had to be. I was a bit sad then said, “Well I’ll be a rotten tomato, I’ll just see how to do this now.”
So this journey begins.
TL;DR: unexpected consequences of dusty devops are overcome and a proof of concept emerges
If it didn’t end here for you, I’m happy to have you on board! Let’s get into it.
Install Laravel
I want a fresh version of Laravel on my Laradock instance. First things first, this time, I want to install using the laravel command (laravel new blog). So to install that, I move to installing composer but notice I’m logged in as root in my container. At first I just say, meh, whatever, I’ll just install this way. But then my conscience comes into play, because in the words of https://getcomposer.org/root we:
“Do not run Composer as root/super user”
So now, I dunno which is the regular user for the laradock machine. I search on google and find it’s laradock (I just couldn’t remember etc/passwd). I search around a bit more and find out that I can actually exec into the container with a specific user. Neat! So, I think how can I use this in the future ? Well how ‘bout a command to ssh into this container:
# Enter laradock workspace
function fmk-lara-ssh() {
	fmk-cd-laradock && winpty docker-compose exec --user=laradock workspace bash
}
OK, now I can really install laravel
host$     fmk-lara-ssh
laradock$ composer global require laravel/installer
laradock$ laravel new export-excel
Then make it run locally in laradock:
- nginx config: duplicate the old config file and change the file name,Server name,files location,logs locations.
- rebuild the nginx container: in the host, run fmk-lara-rebuild-nginx
- windows hosts config: add an entry for my new site 127.0.0.1 export-excel.local
- test this works: navigate to export-excel.localand see the Laravel dashboard
Install prerequisites
A bit of googling gives me a tool I wanna try out. So, I head on over to Laravel excel install page. I quickly check the versions and I’m good to go with the latest one.
composer require maatwebsite/excel
php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"
php artisan make:export UsersExport --model=User
Export
Now for the export, I open the documentation and my eyes feast upon a 5 minutes quick start link.
Going through that I quickly do:
php artisan make:export UsersExport --model=User
I want to add the route but notice there’s a typo - a missing '. The guy’s 
site is awesome since it has a link in the page pointing right to the online
file edit in github. I add the missing character, send the pull request,
then 
he merges in like 20 minutes. Awesome! Now to adding the route:
Route::get('users/export/', 'UsersController@export');
Trouble starts
When I try to access the new route in the form of a message saying:
Illuminate\Database\QueryException : SQLSTATE[HY000] [2002] No such file or directory
First thing I do is recheck the credentials, find out that the credentials 
live in .env for the laradock project… go figure, credentials living in
.env… yeah, that’s who you’re reading, in my defense usually my brain is 
livelier.
But no dice, all is good with the credentials. I investigate further, and find I 
can’t actually run php artisan migrate which is even stranger since… I can
connect to the DB in PHPStorm.
I think about here I am getting
SQLSTATE[HY000] [2002] Connection refused
and I don’t know what to do with it. Unsettling.
Change the credentials to use the root account to login. Finally something 
strange to get as an error message:
SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client
From here it’s relatively easy to get to this SO answer which I change slightly to
ALTER USER 'default'@'%' IDENTIFIED WITH mysql_native_password BY 'secret';
GRANT ALL PRIVILEGES ON upwork_1.* TO 'default'@'%';
flush privileges;
For me the issue name became caching_sha2_password new mysql 8 thing. Also more reading
at this link
Trouble averted
But still no users exported! Well of course, there aren’t any in storage! Just do
php artisan make:auth. Access export-excel.local/register to register a new 
user, then access export-excel.local/users/export and the excel export should
be comfy in your ~/Downloads folder.
Wild and roundabout way for a “simple export”… hope you like this since my brain doesn’t wanna remember again.
PS: Things I left out above:
- how to locally serve my jekyll instance (like this)
- updates to my css during this blog writing
- “help me improve my page” made it on my next_actions.mdlist
- a new “api authentication” post will likely be next
- actual excel file output and proof this wasn’t all in vain
    1 Andrei ciuc@ciuc.ro 2019-07-21 19:42:24 2019-07-21 19:42:24
- future action might include putting up the project where you can check it out
- testing the Edit this page