Looping Laravel multiple connect insert and Update

 

// dd('x');
//get table oracle local
DB::connection('oracle')->table('RSMST_DESAS')->select('des_id', 'des_name', 'kec_id', 'st_desa')->get()
->each(
function ($item) {

// dd($item);
//cek record oracle RS // if exist update else insert
$cekrec = DB::connection('oraclers')
->table('RSMST_DESAS')->where('des_id', $item->des_id)
->first();

if ($cekrec) {
// update
DB::connection('oraclers')->table('RSMST_DESAS')
->where('des_id', $item->des_id)
->update([
'des_id' => $item->des_id,
'des_name' => $item->des_name,
'kec_id' => $item->kec_id,
'st_desc' => $item->st_desa,
]);
} else {
// insert
DB::connection('oraclers')->table('RSMST_DESAS')
->insert([
'des_id' => $item->des_id,
'des_name' => $item->des_name,
'kec_id' => $item->kec_id,
'st_desc' => $item->st_desa,



]);
}
}
);


Select-ing Scalar Values | Running SQL Queries on Laravel

Sometimes your database query may result in a single, scalar value. Instead of being required to retrieve the query's scalar result from a record object, Laravel allows you to retrieve this value directly using the scalar method:

$burgers = DB::scalar(
    "select count(case when food = 'burger' then 1 end) as burgers from menu"
);



https://laravel.com/docs/10.x/database

Live Wire how to trigger emit when validate fails in livewire

 

Basicly, You don't have to check for if ($validator->fails()) livewire does that for you.

If validation fails, a standard ValidationException is thrown (and caught by Livewire), and the standard $errors object is available inside the component's view.

 In order to hook into the validation in "real-time" with Livewire, you need to catch that exception. To get the real-time validation with @error('fieldName'), you should also re-throw the exception once you are done.

 

in my case i need to send emit ('error message') when  $validator->fails()

and now this is the code

 

// Proses Validasi///////////////////////////////////////////
try {
$this->validate($rules, $messages);
} catch (\Illuminate\Validation\ValidationException $e) {

// dd($validator->fails());
$this->emit('toastr-error', "Lakukan Pengecekan kembali Input Data Pasien.");
$this->validate($rules, $messages);
}

 

How to convert date format from dd/mm/yyyy to yyyy-mm-dd using carbon on Laravel

 

You can try this:

Carbon::createFromFormat('d/m/Y', $request->stockupdate)->format('Y-m-d')


https://stackoverflow.com/questions/55950681/how-to-convert-date-format-from-dd-mm-yyyy-to-yyyy-mm-dd-using-carbon-on-laravel

Catching cURL errors with PHP/Laravel

catching cURL errors with PHP/Laravel

cURL error 6: Could not resolve host laravel

Now this is cool and all, but I don't actually want it to return a cURL error and stop my program. 


I'd prefer something like this:


if (guzzle client timed out) {
    do this
} else {
    do that
}



/




Use the inbuilt Laravel Exception class.


Solution:

<?php

namespace App\Http\Controllers;

use Exception;

class MyController extends Controller
{
    public function index()
    {
        try
        {
            $crawler = $goutteClient->request('GET', 'https://www.google.com');
        }
        catch(Exception $e)
        {
            logger()->error('Goutte client error ' . $e->getMessage());
        }

    }
}

 

source : https://stackoverflow.com/questions/57579993/catching-curl-errors-with-php-laravel

Laravel How to validate your parameter List

public function listTurns($doctor_id, $limit, $offset)
{
    $r = [
        'doctor_id' => $doctor_id,
        'limit' => $limit,
        'offset' => $offset,
    ];

    $validator = Validator::make($r, [
        'doctor_id' => 'required|numeric|min:1|exists:doctors,id',
        'limit' => 'required|numeric|min:1',
        'offset' => 'required|numeric|min:0',
    ]);
}

 

 https://stackoverflow.com/questions/29578153/how-to-validate-route-parameters-in-laravel-5

Laravel Custom Validation Language Lines (Laravel Custom errors message



    "accepted"             => "The :attribute must be accepted.",
    "active_url"           => "The :attribute is not a valid URL.",
    "after"                => "The :attribute must be a date after :date.",
    "alpha"                => "The :attribute may only contain letters.",
    "alpha_dash"           => "The :attribute may only contain letters, numbers, and dashes.",
    "alpha_num"            => "The :attribute may only contain letters and numbers.",
    "array"                => "The :attribute must be an array.",
    "before"               => "The :attribute must be a date before :date.",
    "between"              => [
        "numeric" => "The :attribute must be between :min and :max.",
        "file"    => "The :attribute must be between :min and :max kilobytes.",
        "string"  => "The :attribute must be between :min and :max characters.",
        "array"   => "The :attribute must have between :min and :max items.",
    ],
    "boolean"              => "The :attribute field must be true or false.",
    "confirmed"            => "The :attribute confirmation does not match.",
    "date"                 => "The :attribute is not a valid date.",
    "date_format"          => "The :attribute does not match the format :format.",
    "different"            => "The :attribute and :other must be different.",
    "digits"               => "The :attribute must be :digits digits.",
    "digits_between"       => "The :attribute must be between :min and :max digits.",
    "email"                => "The :attribute must be a valid email address.",
    "filled"               => "The :attribute field is required.",
    "exists"               => "The selected :attribute is invalid.",
    "image"                => "The :attribute must be an image.",
    "in"                   => "The selected :attribute is invalid.",
    "integer"              => "The :attribute must be an integer.",
    "ip"                   => "The :attribute must be a valid IP address.",
    "max"                  => [
        "numeric" => "The :attribute may not be greater than :max.",
        "file"    => "The :attribute may not be greater than :max kilobytes.",
        "string"  => "The :attribute may not be greater than :max characters.",
        "array"   => "The :attribute may not have more than :max items.",
    ],
    "mimes"                => "The :attribute must be a file of type: :values.",
    "min"                  => [
        "numeric" => "The :attribute must be at least :min.",
        "file"    => "The :attribute must be at least :min kilobytes.",
        "string"  => "The :attribute must be at least :min characters.",
        "array"   => "The :attribute must have at least :min items.",
    ],
    "not_in"               => "The selected :attribute is invalid.",
    "numeric"              => "The :attribute must be a number.",
    "regex"                => "The :attribute format is invalid.",
    "required"             => "The :attribute field is required.",
    "required_if"          => "The :attribute field is required when :other is :value.",
    "required_with"        => "The :attribute field is required when :values is present.",
    "required_with_all"    => "The :attribute field is required when :values is present.",
    "required_without"     => "The :attribute field is required when :values is not present.",
    "required_without_all" => "The :attribute field is required when none of :values are present.",
    "same"                 => "The :attribute and :other must match.",
    "size"                 => [
        "numeric" => "The :attribute must be :size.",
        "file"    => "The :attribute must be :size kilobytes.",
        "string"  => "The :attribute must be :size characters.",
        "array"   => "The :attribute must contain :size items.",
    ],
    "unique"               => "The :attribute has already been taken.",
    "url"                  => "The :attribute format is invalid.",
    "timezone"             => "The :attribute must be a valid zone.",
 

 

source : https://github.com/laracasts/Email-Verification-In-Laravel/blob/master/resources/lang/en/validation.php

Laravel How to filter Collection Like Query Builder

we know that FIlter in laravel does not support like

but sometimes we need to read array by name and filtering like '%typeing%' query builder

 

when we use like on filter it return null because  FIlter in laravel does not support like 

 

then here it's use this script for filtering data look like name

collect($array)->filter(function ($item) use ($search) 

{

return false !== stristr($item['your desc or name'], $search);  

});


Laravel Multiple Database Connections

1. config/database.php

 'mysql1' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST', '127.0.0.1'),
            'port' => env('DB_PORT', '3306'),
            'database' => env('DB_DATABASE', 'forge'),
            'username' => env('DB_USERNAME', 'forge'),
            'password' => env('DB_PASSWORD', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

        'mysql2' => [
            'driver' => 'mysql',
            'url' => env('DATABASE_URL'),
            'host' => env('DB_HOST_2', '127.0.0.1'),
            'port' => env('DB_PORT_2', '3306'),
            'database' => env('DB_DATABASE_2', 'forge'),
            'username' => env('DB_USERNAME_2', 'forge'),
            'password' => env('DB_PASSWORD_2', ''),
            'unix_socket' => env('DB_SOCKET', ''),
            'charset' => 'utf8mb4',
            'collation' => 'utf8mb4_unicode_ci',
            'prefix' => '',
            'prefix_indexes' => true,
            'strict' => true,
            'engine' => null,
            'options' => extension_loaded('pdo_mysql') ? array_filter([
                PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
            ]) : [],
        ],

 

 

2. .env

 

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_multiple_database1
DB_USERNAME=root
DB_PASSWORD=

DB_CONNECTION_2=mysql
DB_HOST_2=127.0.0.1
DB_PORT_2=3306
DB_DATABASE_2=laravel_multiple_database2
DB_USERNAME_2=root
DB_PASSWORD_2=

 3. connection setting

$table1 = DB::connection('mysql1')->table('desa')->get()
->each(function ($item) {
DB::table('desa')->insert([
'id_desa' => $item->id_desa,
'id_prov' => $item->id_prov,
'id_kab' => $item->id_kab,
'id_kec' => $item->id_kec,
'nm_desa' => $item->nm_desa,
'st_desa' => $item->st_desa,

]);
});

 

$table2 = DB::connection('mysql2')->table('desa')->get()
->each(function ($item) {
DB::table('desa')->insert([
'id_desa' => $item->id_desa,
'id_prov' => $item->id_prov,
'id_kab' => $item->id_kab,
'id_kec' => $item->id_kec,
'nm_desa' => $item->nm_desa,
'st_desa' => $item->st_desa,

]);
});

 in this case i wanna insert all table (looping using each method) data from mysql to oracle database using mysql1 and mysql2 connection by default oracle database connection

https://codelapan.com/post/how-to-use-multiple-database-connections-in-laravel-8

Laravel ajax url not working on production server

 https://stackoverflow.com/questions/56417564/laravel-ajax-not-working-in-production-mode-the-requested-url-appointment-45

Laravel Vite Deploying to Host

     <!--@vite(['resources/css/app.css', 'resources/js/app.js'])-->

Worked for me

        <link href="{{ asset('build/assets/app-3cbe0a94.css') }}" rel="stylesheet">
        <script src="{{ asset('build/assets/app-c47d7316.js') }}" defer></script>

https://stackoverflow.com/questions/72437488/uncaught-typeerror-is-undefined

Laravel dynamic page title in navbar-brand

 <html>
<head>
    <title>App Name - @yield('title')</title>
</head>
<body>
    @section('sidebar')
        This is the master sidebar.
    @show

    <div class="container">
        @yield('content')
    </div>
</body>


then your page title can be changed in your blade page like below

@extends('layouts.master')

@section('title', 'Page Title')

@section('sidebar')
@parent

<p>This is appended to the master sidebar.</p>
@endsection

@section('content')
<p>This is my body content.</p>
@endsection


source : https://stackoverflow.com/questions/34497428/laravel-dynamic-page-title-in-navbar-brand