發表文章

目前顯示的是有「laravel」標籤的文章

今天再來處理 id 顯示 name 的問題

   用 php 抓資料是再簡單不過的事,用上 laravel 抓資料庫裏的資料應該也是,應該……,這次輪到 Show 的資料,使用那個不知為何一直連不上的外鍵,這次還是要處理數值轉出成名稱的問題。 工作環境:   laravel 7.*   dcat-admin 2.0.6-beta Show 資料列表用的是 show 區塊,像是 $show->field('foreign_id'); 再試了一下關係關聯的部份,結果還是撞牆,只能另(另)謀(闢)出(蹊)路(徑),胡搞蝦搞一番了。 $county = \App\Models\County::all()->pluck('name','id')->toArray(); $show->field('single')->using($county); 或是直接傳回 \App\Models\County::all()->pluck('name','id')->toArray() 又過了一關,仰賴 dcat 的 helper 還是得爬爬山。   收工!

tinker 中文字為亂碼

 亂碼這事,事小,但是像那苦纏不捨的蒼蠅,不理牠,牠就一直在旁邊飛著、吵著。 工作環境:   Laravel 7   Database Collation: utf8mb4_unicode_ci   tinker $php artisan tinker >>>  \App\Models\Model_Name::all() => 列出所有的資料,顯示的部份沒有問題,正確地顯示中文內容 >>> DB::table('table_name')->get(); => 中文內容無法正確地顯示 >>>  DB::table('table_name')->charset = 'utf8mb4'; >>>  DB::table('table_name')->collation = 'utf8mb4_unicode_ci'; 再次  >>> DB::table('table_name')->get();  => 正確地顯示中文內容  重開終端機也可以正確地顯示中文內容   -------------------- FAIL  --------------------  DB::table('table_name')->charset('utf8mb4')  DB::table('table_name')->collate('utf8mb4_unicode_ci')  DB::table('table_name')->collations('utf8mb4_unicode_ci') -------------------- FAIL  --------------------   收工!

今天還是要處理 id 轉換成 name

 用 php 抓資料是再簡單不過的事,用上 laravel 抓資料庫裏的資料應該也是,應該……,這次輪到 List 的資料,使用那個不知為何一直連不上的外鍵,這次還是要處理數值轉出成名稱的問題。 工作環境:   laravel 7.*   dcat-admin 2.0.6-beta List 資料列表用的是 grid 區塊,像是 $grid->column('foreign_id'); 再試了一下關係關聯的部份,結果還是撞牆,只能另(另)謀(闢)出(蹊)路(徑),胡搞蝦搞一番了。 $grid->column('foreign_id')->display(function($foreign_id){     $counties = \App\Models\County::all()->pluck('name','id');     $output = $counties[$foreign_id];     return $output; }); 或是直接 \App\Models\County::find($foreign_id)->name;  不論是哪一種 scaffold 都有崁,只希望 dcat 的崎嶇少一點,畢竟目前為止,它的介面最好用啊。   收工!

就只是想把 name id 抓出來倒到 selection 裏

用 php 抓資料是再簡單不過的事,用上 laravel 抓資料庫裏的資料應該也是,應該…… 工作環境:   laravel 7.*   dcat-admin 2.0.6-beta $form->selction('field_name')->options($options); 就是為了那個 $options 看文件,又要設關聯,又要改 new 啟始的條件,要加 ::with(['foreign_table']),奈何,不是路徑不對,不然 get() 時少了變數,要不就找不到 Controller, Model, object, method, variable ...........,啊不是說很簡單 )(*^%$%*()_)(*&^(*&^&(_)*& 結果還真的很簡單,跳過以上那些個說明,直接: $options = \App\Models\ModelName::all()->pluck('name','id'); //記得那個一開始的 \ 不能少了! 結果這個 options 的產出,官網文檔、演示站就是沒有,可能太低小下,略了! 青春也略了!   收工!

laravel 既有資料的 seed 產生器

laravel 的 migrate 工具可以讓我們產生相應的資料庫,讓使用者輸入資料到資料庫中。 有別於透過 sql 檔案來匯入資料庫中的資料,laravel 提供了 (db:)seed 讓我們把資料匯入資料庫中。 那要怎麼產生 seed 要用的內容呢? 這裏指的是要把預設的、指定的資料內容填入資料庫,而不是用 factory 來產生隨機資料的情境。 既然有 seed 指令就是可以手寫相關的檔案,就像是 https://laravel.tw/docs/5.2/seeding 提到的,建個 seed 檔案來填相應欄位的資料,再用 DatabaseSeeder.php 來呼叫所有的 seed 檔,或是透過指令 php artisan db:seed --class=UserTableSeeder 來執行指定的 seed 檔。 想當然爾「不想手動」,那就來找個工具。 工作環境:   laravel 7.*   iseed 2.6.4 https://github.com/orangehill/iseed   安裝 iseed: $composer require orangehill/iseed 產生 seed 檔/匯出資料庫中的資料: $php artisan iseed my_table,another_table,users database/seeds 下會生成相對應的 seed 檔案 匯入 users 資料庫中的資料: $php artisan db:seed --class=UserTableSeeder 或是匯入所有的資料: $php artisan db:seed 如果安裝時出現記憶體不足 Fatal error: Allowed memory size of ########## bytes exhausted 請見這裏

laravel-excel 3 impoirt export 實作範例

想讀寫 Excel 文件,看了老半天,只輸出了一個空白的 Excel檔,浪費好物 laravel-excel 應該有人寫完整實做吧,果真! 工作環境:   laravel-6   phpspreadsheet   laravel-excel 記得要先裝 phpspreadsheet ! laravel-excel 安裝方法看這裏: https://docs.laravel-excel.com/3.1/getting-started/installation.html 使用Composer安裝: composer require maatwebsite/excel 設定 config/app.php 的 providers: + Maatwebsite\Excel\ExcelServiceProvider::class, 設定 config/app.php 的 aliases: + 'Excel' => Maatwebsite\Excel\Facades\Excel::class, $ php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider" 執行成功後 vender/maatwebsite/config 下會多一個 excel.php 實做範例參看這裏: https://www.itsolutionstuff.com/post/laravel-57-import-export-excel-to-database-exampleexample.html 啟用內建資料庫 $ php artisan migrate 做一些測試用的資料 $ php artisan tinker factory(App\User::class, 20)->create(); 建立輸入 Controller(output: app/Imports/UsersImport.php) $ php artisan make:import UsersImport --model=User 建立輸出 Controller(output: app/Exports/UsersExport.ph...

laragon 建置可攜本機開發環境

搞一個不折騰的開發環境是最近的目標,有點折騰,不過,為了以後不折騰,先稍稍折騰一下 laragon 。 工作環境:   Windows 10   laragon portable V4 nginx 新增了 laravel 的程式之後,會以 appName 做為網址,預設會在 appName.test 如果不愛 .test 請到右上角有個齒輪形狀(設定) > General > Auto virtual hosts > Hostname: 輸入你愛的網域名稱,例如:{name}.love ,之後,就可以連到 appName.love ,很方便啊,網址又好看。 php7 +# PHP +php=https://windows.php.net/downloads/releases/php-7.3.11-Win32-VC15-x64.zip Menu > Quick App > Configuration+# Laravel +Laravel=composer create-project --prefer-dist laravel/laravel %s 現在開始可以: Menu > Quick App > Laravel > appName > 然後就裝了 laravel ,而且設好了 appName.test 這個網站可以連上去用。 MySQL 5.7 至少昇級到這個版本吧,不然 phpmyadmin 一直報錯 error 200,要不就連線中斷。 Menu > Tools > Quick Add > mysql-5.7 Menu > MySQL > version > mysql-5.7 很重要!很重要!很重要! 如果要為 root 設定 password 一定要從 Menu > MySQL > change root password 改,不然會出現很難搞的狀況, MySQL 重啟後就進不去了! Laravel: 如果遇到沒有 autoload.php 這個檔案,記得去 appName 下 composer install 一下。 Warning: require(...

安裝 voyager

拿起我那斬到快斷的手(誤),來安裝夢裏看到也會笑的 voyager 以便展開我的新旅程,之前做的那麼多,都是為了要在 laravel 裝上之後來裝 voyager ,雖然現在 voyager 不是維一的選擇,但是它也持續發展了一段時間,而且 UI 越來越完整,應該還是不錯的選擇,希望它可以撐得比 XOOPS 長。 工作環境:   Windwos 10 + virtualbox   guest: Ubuntu 18 server 現在的 voyager 不但已經有了使用者界面,而且現在官網上也有教學,當然,要學功夫,就學正宗,看著官網做,總是不會錯。 安裝一個新的 laravel 專案就叫 voyager 這樣會在你的家目錄底下新增一個 voyager 的 laravel 開發環境 $ laravel new voyager 記得要修正程式用來儲存檔案的資料夾的權限,像是 storage 以下的資料夾就是預設儲存檔案的地方 $ sudo chown -R $USER.www-data storage $ chmod -R 775 storage $ sudo chown -R $USER.www-data hook $ chmod -R 775 hook 導入 voyager 的套件的設定和指令,並且修改相關的參數 $ cd /voyager $ composer require tcg/voyager$ vim .env ------------------------- APP_URL=http://laravel.test:8080 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=voyager DB_USERNAME=voyager DB_PASSWORD=your_voyager_password ------------------------- 完成修改的 voyager 相關設定大概會長成這個樣子,記得如果你的網址和你的 apache 設定要一樣,網址和埠號準確地寫在設定檔裏面,沒有設好的話,像是 media 中頭像、檔案這種和路徑相關密切相關的資料,就無法正確地顯示,導致網頁中圖片的部份沒有顯示或...

voyager 的中文界面設定

多語系支援的需求雖然一開始不會浮現,但是早晚還是得要面對的事情, voyager 事先就實作了,需要的就是一點翻譯的工作。 作業環境:   Windows 10 + virtualbox   guest: Ubuntu server 18 設定所需的檔案位置在這裏: /your_app_path/vendor/tcg/voyager/publishable/lang預設只有 zh_CN 自已轉了內容存到 zh_TW 就可以用了。 之後登入使用者的編輯介面中 local 有新的 zh_TW 可以選用,再次登入的時侯就會看到中文的介面了,用詞當然不是全部和我們的習慣一樣,再自已去語系檔裏改一下嚕。 收工!

composer 安裝 laravel error Permission denied

為了要安裝 laravel,因為對於 vagrant 、 docker 這些工具都不熟悉,只能手動建置平台,也就因此遇到一些前人已經處理完的問題,這次是權限問題 $composer global require laravel/installer   [ErrorException]   file_put_contents(./composer.json): failed to open stream: Permission denie   d 因為權限的問題,所以在本機用非 root 帳號使用 composer 時,出現了以上的錯誤訊息,但是 composer 也不建議用 root 帳號安裝,那麼得來處理一下這個權限問題。 $sudo chown -R $USER.$USER ~/.composer/ 再裝一次 laravel $composer global require laravel/installer 應該就可以了

laravel 的 apache2 伺服器和 VM 相關設定

除了要把 laravel 的網頁伺服器帶起來以外,還想在連線的時侯不要用記不起來的 ip 而用網址名稱來連線,所以調整 apache 的設定,以及網址的對應。 工作環境:   Windows 10 + virtualbox   guest: Ubuntu 18 server   Windows IP: 192.168.ooo.xxx laravel 安裝在   /home/your_name/your_laravel_path/public 網址與 IP 的對應檔案   C:\Windows\System32\drivers\etc\hosts 其中 apache 使用以名稱對應的虛擬網頁,ServerName 要和網址對應檔的名稱對應   ServerName      laravel.test    <====>    127.0.0.1    laravel.test 加上 virtualbox 的埠號對應(8080)   Windows 10 host 瀏覽器 > laravel.test:8080 > VM > 127.0.0.1:8080  laravel.test.conf NameVirtualHost *:8080 Listen  8080 <VirtualHost *:8080>     ServerName      laravel.test     ServerAlias     www.laravel.test     # The location of our projects public directory.     DocumentRoot    /home/your_name/yo...

laravel 剛剛裝好無法進入

時至今日,真的很能體會關先生當初過五關、斬六將的辛苦,為了要把 laravel 裝起來,已經不知道過了幾關,斬的手都骨折了。好不容易,到了可以連到 laravel 的時侯了,帶著期待的心情,開啟瀏覽器,連到 laravel.test:8080,登!登!登!登! MMMMMMMMMmmmm......... 不是那個白底的 Laravel 的 welcome page 是那個俗稱亂碼的&^%$^&*(*&^%%&* 工作環境:   Windows 10 + virtualbox   guest: Ubuntu 18 server 好在左上方的訊息很清楚,長得像這樣子的 The stream or file "/path_to_laravel/storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied ... 又是權限問題,那就簡單一些,谷溝大神說已經有人遇過了:   sudo chown -R $USER:www-data storage   chmod -R 775 storage 再連一次 laravel.test:8080 總算是還給我白皙首頁 開心 收工!

composer 安裝 laravel error ext-zip

試著不用 homestead, docker 這些工具,自行安裝 laravel, 之前已經安裝完成了 composer 接著就是要安裝 laravel 了,根據官網的說明,只要滿足一些套件就可以了,     PHP >= 7.1.3     OpenSSL PHP Extension     PDO PHP Extension     Mbstring PHP Extension     Tokenizer PHP Extension     XML PHP Extension     Ctype PHP Extension     JSON PHP Extension 工作環境:   Windows 10 + virtualbox   guest: ubuntu 18 server $composer global require laravel/installer error:   ext-zip * -> the requested PHP extension zip is missing from your system ... 應該是要安裝 php-zip 或是 phpVersion-zip ,但是,找不到 @@" 這時侯,請更新 /etc/apt/source.list (請記得先備份哦) $vim  /etc/apt/source.list 加上 universe 類別的套件  ---------- deb http://archive.ubuntu.com/ubuntu bionic main universe deb http://archive.ubuntu.com/ubuntu bionic-security main universe deb http://archive.ubuntu.com/ubuntu bionic-updates main universe  -------...

設定 laravel 執行檔的路徑 以便日後使用

安裝完成 laravel 之後,laravel 的執行檔會在家目錄下的 .composer/vender/bin/ 的資料夾裏,所以,預設要執行 laravel 時,就要 .composer/vender/bin/laravel 才能執行,當然不能搞到這麼麻煩,所以,再來調整一下。 工作環境:   Windows 10 + virtualbox   guest: ubuntu 18 server   composer global   laravel global $vim .bashrc 在檔案最後方加上一行,真正的路徑請依你的實際狀況調整 export PATH="$PATH:$HOME/.composer/vendor/bin" $source .bashrc 此時 $laravel 會輸出 Laravel Installer 2.0.1 Usage:   command [options] [arguments] Options:   -h, --help            Display this help message   -q, --quiet           Do not output any message   -V, --version         Display this application version       --ansi            Force ANSI output       --no-ansi       ...

Ubuntu 18 MySQL root 帳密設定

在 Ubuntu 18 server 安裝了 phpmyadmin 結果 root 帳密無法登入,會出現類似 root 帳號不能空白。 工作環境:   Windows 10 + virtualbox   guest: Ubuntu 18 server 用 root 登入 mysql: $ sudo su - $ mysql -uroot 確認你的使用者在資料庫中 mysql> SELECT User,Host FROM mysql.user; +------------------+-----------+ | User                  | Host      | +------------------+-----------+ | admin               | localhost | | root                  | localhost | 設定你的密碼 mysql> UPDATE user SET authentication_string=PASSWORD("YOUR_PASSWORD") WHERE User='root'; 改認證方式 mysql> UPDATE user SET plugin="mysql_native_password" WHERE User='root'; 最用權限 mysql> FLUSH PRIVILEGES; =================== 如果已經被改到進不去資料庫的解法 $ sudo service mysql stop $ sudo mkdir -p /var/run/mysqld $ sudo chown mysql:mysql /var/run/mysqld $ sudo /usr/sbin/mysqld --skip-grant-tables --skip-network...

laravel 筆記 虛擬網站設定

laravel 的虛擬網站設定 因為使用者看到的 laravel 網頁,實體位置是在 newedApp/public 裏,所以用 apache 預設的 userdir 設定恐怕是得繞些路,而且因為有機會瀏覽核心的文件,在安全上疑慮可能多一些,所以這次要針對這個部份加以設定,把使用者直接導到 newedApp/public 目錄。 以下範例,以 abc 的 app 專案為例,依樣畫狐狸就可以連到 app 的網站: 將設定存到 /etc/apache2/sites-availabe/abc.conf > sudo a2ensite abc.conf ,/etc/apache2/sites-enabled 下就會多一個連結 > sudo service apache2 restart /etc/apache2/sites-availabe/abc.conf: <virtualhost>  ServerAdmin webmaster@dummy-host.example.com  DocumentRoot "/home/abc/public_html/app/public"  ServerName abc.local  ServerAlias www.abc.local   ErrorLog ${APACHE_LOG_DIR}/error.log   CustomLog ${APACHE_LOG_DIR}/access.log combined      <directory "/home/ricky/public_html/emsl/public">          Options Indexes MultiViews FollowSymLinks          AllowOverride All          Require all granted      </directory> </vir...