<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Farruh Mahkamov</title><generator>teletype.in</generator><description><![CDATA[Farruh Mahkamov]]></description><image><url>https://img4.teletype.in/files/3c/fc/3cfc57c9-f8e7-42c2-80b8-5955c8b28aeb.png</url><title>Farruh Mahkamov</title><link>https://teletype.in/@farruhmahkamov</link></image><link>https://teletype.in/@farruhmahkamov?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/farruhmahkamov?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/farruhmahkamov?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 15 Apr 2026 20:32:34 GMT</pubDate><lastBuildDate>Wed, 15 Apr 2026 20:32:34 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@farruhmahkamov/laravel-resources</guid><link>https://teletype.in/@farruhmahkamov/laravel-resources?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov</link><comments>https://teletype.in/@farruhmahkamov/laravel-resources?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov#comments</comments><dc:creator>farruhmahkamov</dc:creator><title>Laravel - API Resources</title><pubDate>Sat, 25 Jun 2022 09:57:22 GMT</pubDate><category>tutorials</category><description><![CDATA[<img src="https://img1.teletype.in/files/09/d7/09d77984-13dd-4e23-b529-a5f560c34086.png"></img>API loyiha yartaish mobaynida eloquent modellarimiz va foydalanuvchilarni bog'lab turivchi layer(shablon) kerak bo'ladi. Bu ishni bajarishda bizga resource yordamga keladi. API resource yaratish uchun quyidagi commandni terminalga yozamiz]]></description><content:encoded><![CDATA[
  <p id="VYiS">API loyiha yartaish mobaynida eloquent modellarimiz va foydalanuvchilarni bog&#x27;lab turivchi layer(shablon) kerak bo&#x27;ladi. Bu ishni bajarishda bizga resource yordamga keladi. API resource yaratish uchun quyidagi commandni terminalga yozamiz</p>
  <pre id="5Kr6">php artisan make:resource PostResource</pre>
  <p id="4ihK">Bu bizga <code>app/http/resource</code> da <code>PostResource.php</code> filesini yaratib beradi. FIle ni boshlang&#x27;ich  holati quyidagicha :</p>
  <figure id="wYHg" class="m_original">
    <img src="https://img1.teletype.in/files/09/d7/09d77984-13dd-4e23-b529-a5f560c34086.png" width="718" />
  </figure>
  <p id="795D">Biz Resource bilan emas <code>toJson()</code> methodidan foydalanib ma&#x27;lumotlarimizni JSON ko&#x27;rinishiga keltirib foydalanuvchiga taqdim etishimiz mumkin, ammo, Eloquent Resourcelar modellar va ularni munosabatlarini JSON ga serialashtirishda(o&#x27;girishda) yanaham aniqroq va mustahkamlab berishda bizga juda katta yordam beradi.</p>
  <p id="HCn4">Barcha API resource filelar <code>toArray()</code> methodini ishlatadi. Bu method bizga controllerdan yoki routelardan kelgan ma&#x27;lumotni JSON ko&#x27;rinishiga keltirib beradi. Modellarimizdan kelgan natijani resource yordamida chiqarish uchun $this ni ishlatmiz.Resourcega biron bir model berilgandan so&#x27;ng agar resource qaytarib yuborilsa ma&#x27;lumotlarni JSON ko&#x27;rinishida olish mumkin : </p>
  <figure id="ollW" class="m_original">
    <img src="https://img3.teletype.in/files/ee/f2/eef2bfc9-e66e-4b06-9df6-9ca7b6a0c2e9.png" width="718" />
  </figure>
  <p id="Rbtf">Endi resourceni qanday ishlatishni o&#x27;zimizning misolimzda bir ko&#x27;rib chiqamiz. Tassavvur qiling bizda Product model bor:</p>
  <figure id="h15Q" class="m_original">
    <img src="https://img2.teletype.in/files/df/e6/dfe681e5-8229-4649-9ed7-574ed13b1e1e.png" width="718" />
    <figcaption>Product model.</figcaption>
  </figure>
  <p id="Mbfd">Endi huddi shu modelni <code>ProductControllerda.php</code> da chaqirib ma&#x27;lumotlarni resource qaytarib yuboramiz:</p>
  <figure id="ylxc" class="m_original">
    <img src="https://img4.teletype.in/files/b5/e4/b5e4dfdf-b912-45eb-9b4b-1665174cf31c.png" width="718" />
    <figcaption>ProductController.php</figcaption>
  </figure>
  <p id="E7hK">Endi controllerni ishlatish uchun route yozish kerak:</p>
  <figure id="PYif" class="m_original">
    <img src="https://img3.teletype.in/files/27/33/273305a4-a24e-4959-ac30-f1ca62c5908a.png" width="718" />
    <figcaption>api.php</figcaption>
  </figure>
  <p id="NlH4">Endi asosiy masalaga o&#x27;tamiz. Resource fileda ma&#x27;lumotlarni jsonga o&#x27;giramiz:</p>
  <figure id="8g5Q" class="m_original">
    <img src="https://img1.teletype.in/files/c8/fe/c8fe9516-1e32-45d6-830f-1506d6f0a052.png" width="718" />
    <figcaption>ProductResource.php</figcaption>
  </figure>
  <p id="ftXz">Endi bizga ma&#x27;lumotlar quyidagi ko&#x27;rinishda keladi:</p>
  <figure id="ciGc" class="m_original">
    <img src="https://img3.teletype.in/files/e4/aa/e4aa6755-2d57-4d63-9330-7476eeeaaea2.png" width="718" />
    <figcaption>response body</figcaption>
  </figure>
  <p id="Wtdp">Resource yordamida faqat bizga kerakli bo&#x27;lgan columnlarni ham olishimiz mumkin buning uchun shunchaki sizga kerakli bo&#x27;lmagan qatorni olib tashlang. </p>
  <p id="liEG">Qolgan ma&#x27;lumotlarni <a href="https://laravel.com/docs/9.x/eloquent-resources" target="_blank">https://laravel.com/docs/9.x/eloquent-resources</a> dan olishingiz mumkin..</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@farruhmahkamov/laravel-requestlar</guid><link>https://teletype.in/@farruhmahkamov/laravel-requestlar?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov</link><comments>https://teletype.in/@farruhmahkamov/laravel-requestlar?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov#comments</comments><dc:creator>farruhmahkamov</dc:creator><title>Laravel - HTTP Requestlar</title><pubDate>Thu, 16 Jun 2022 09:19:47 GMT</pubDate><description><![CDATA[<img src="https://img4.teletype.in/files/32/92/329292e4-ab0c-409e-a070-7f3d7e67e2a0.png"></img>Laravel's Illuminate\Http\Request klassi ilovangiz tomonidan bajarilayotgan HTTP so'rovi bilan o'zaro ishlashga yordam beruvchi va so'rov bilan birga yuborilgan cookie va fayllarni olish imkonini beradi.]]></description><content:encoded><![CDATA[
  <h2 id="jzxs">Kirish</h2>
  <p id="xRIu">Laravel&#x27;s <code>Illuminate\Http\Request</code> klassi ilovangiz tomonidan bajarilayotgan HTTP so&#x27;rovi bilan o&#x27;zaro ishlashga yordam beruvchi va so&#x27;rov bilan birga yuborilgan cookie va fayllarni olish imkonini beradi.</p>
  <p id="Uvhx">Aynan hozirgi vaqt bo&#x27;layotgan so&#x27;rav ekzemplyarini qabul qilish uchun ishlatoyatgan controller yoki marshutizatoringiz yopilishida ishlatishingiz kerak.</p>
  <figure id="Gt56" class="m_column">
    <img src="https://img4.teletype.in/files/32/92/329292e4-ab0c-409e-a070-7f3d7e67e2a0.png" width="1126" />
  </figure>
  <p id="wIXX">Yuqorida aytilganidek siz <code>Illuminate\Http\Reques</code>classni faqat controllerda emas marshutizatordaham(route) ishlatishingiz mumkin.</p>
  <h2 id="1BTv"><strong>Request Headers</strong></h2>
  <p id="IDHU">Siz kelayotga  so&#x27;ravning sarlavhasini(header) ni <code>Request</code> class dagi <code>header</code> method orqali olishingizg mumkin. Agar sarlavha headersiz keladigan bo&#x27;lsa, method null qaytaradi. Ammo methodga hohishiy bo&#x27;lgan ikkinchi argumentni ham ishlatish mumkin:</p>
  <figure id="xkHP" class="m_original">
    <img src="https://img1.teletype.in/files/44/15/44159726-0b31-4836-aaf9-05eeaa082b50.png" width="590" />
  </figure>
  <p id="1j9o"><code>hasHeader</code> mehtodi yordamida siz o&#x27;zingizga kerakli bo&#x27;lgan header kelyabdimi yo&#x27;qmi tekshirishingiz ham mumkin:</p>
  <figure id="5nEo" class="m_original">
    <img src="https://img2.teletype.in/files/5f/4a/5f4ab398-c32f-4dd7-ad34-c68c64d4d318.png" width="498" />
  </figure>
  <p id="ROEx">API loyiha qilinayotganda maslahatim o&#x27;zingiz API uchun custom middleware ochib qo&#x27;ying. Chunki frontend qismida Accept/Application-Json emas Content-Type/Application-Json header keladi. JSON should be JSON qonuniyatiga amal qiladigan bo&#x27;lsak o&#x27;zimiz custom middleware yaratib handle method ichiga:</p>
  <figure id="qtLS" class="m_original">
    <img src="https://img2.teletype.in/files/5b/24/5b24b3e2-ea01-47c0-be82-462372845e8b.png" width="718" />
  </figure>
  <p id="k0Vl">Sunda har bir so&#x27;rov sarlavhasiga Accept header qo&#x27;shiladi.</p>
  <h2 id="h3gt">Inputlar bilan ishlash</h2>
  <p id="skiH">So&#x27;rovdan kelayotgan barcha ma&#x27;lumotlarni <code>$request-&gt;all()</code> orqali massive ko&#x27;rinishida olsa bo&#x27;ladi. Kelayotgan so&#x27;rov turi HTML-So&#x27;rov boladi yoki XHR so&#x27;rov bo&#x27;ladimi muhim emas. </p>
  <p id="gZQm">Agar sizga so&#x27;ovda kelgan narsalarni collectionga solish <code>$request-&gt;collect()</code> yordamida amalga oshiriladi.</p>
  <p id="1fJL">Faqat ma&#x27;lum bir inputlarni olish kerak bo&#x27;lsa <code>$request-&gt;only()</code> ishlatilinadi. Method arrayni ham qabul qilishi mumkin.</p>
  <p id="McdH">Bundan tashqari laravelda bir qancha boshqa helper methodlar bor. Agar to&#x27;liq tanishib chiqishni istasangiz ushbu <a href="https://laravel.com/docs/9.x/requests#input" target="_blank">havolaga</a> kiring. </p>
  <h2 id="MAjl">Filelar bilan ishlash</h2>
  <p id="xWlw"><code>Illuminate\Http\Request</code> yordamidan siz so&#x27;rovdan kelayotgan filelarni <code>file</code> methodi yoki o&#x27;zgaruvchan hususiyatlar yordamida olib olishingiz mumkin.Bu method (<code>file)</code> <code>Illuminate\Http\UploadedFile</code> classdan namuna(instance) qaytaradi. Hullas qisqa qilib aytganda file bilan hohlagan manipulyatsia qilishingiz mumkin.</p>
  <figure id="l0t0" class="m_original">
    <img src="https://img1.teletype.in/files/c2/c1/c2c11787-bafe-4880-a101-70174b6bf58c.png" width="718" />
  </figure>
  <p id="Uwxp">Kelayo</p>
  <p id="Y1X6">tgan so&#x27;rovda fayl bormi yo&#x27;qligini <code>$request-&gt;hasFile()</code> methodi orqali tekshirib olishingiz mumkin. </p>
  <figure id="bFGZ" class="m_original">
    <img src="https://img3.teletype.in/files/ed/29/ed2997d8-3b9f-4f2d-a33a-77fe61575e08.png" width="718" />
  </figure>
  <p id="ikZJ">Yangi yuklanga fileni saqlash ushun <code>Illuminate\Http\UploadedFile</code> da <code>store()</code> method bor. Rasm yuklashda laraveldagi biron bir filesystemdan foydalansangiz bo&#x27;ladi. Filesystem bilan to&#x27;liqroq tanishish uchun <a href="https://laravel.com/docs/9.x/filesystem" target="_blank">havola</a> ustiga bosing.</p>
  <p id="2yKm">Store methodi rasmni filesystem qaysi diskga to&#x27;g&#x27;rlangan bo&#x27;lsa o&#x27;sha diskra fileni saqlaydi.Argument sifatida birinchi bo&#x27;lib faqat $path beriladi yani. Fqat file saqlanadigan folder nomi. 2-argument sifatida esa disk nomini ham berib yuborish mumkin:</p>
  <figure id="uDve" class="m_original">
    <img src="https://img1.teletype.in/files/07/a2/07a29c3f-35c0-43b5-a853-653664bae3e7.png" width="718" />
  </figure>
  <p id="1TTS"></p>
  <p id="n7WK">Hozircha faqat shular. Agar qandaydur savol bo&#x27;lsa commentlarga yozib qoldiring qo&#x27;ldan kelgancha javob berishga harakat qilaman.</p>
  <p id="dn9c"></p>
  <p id="RUHi"><em>Agar postda qandaydur hatolik ketgan bo&#x27;lsa ming bor uzur..</em></p>
  <p id="xgt1"><em>(Barcha ma&#x27;lumotlar laravel.com dan tikkasiga chopilgan : ) )</em></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@farruhmahkamov/laravel-notifications</guid><link>https://teletype.in/@farruhmahkamov/laravel-notifications?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov</link><comments>https://teletype.in/@farruhmahkamov/laravel-notifications?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov#comments</comments><dc:creator>farruhmahkamov</dc:creator><title>LARAVEL - NOTIFICATIONS</title><pubDate>Fri, 10 Jun 2022 06:28:12 GMT</pubDate><category>tutorials</category><description><![CDATA[Loyihani  yaratish davomida foydalanuvchilarga loyihadagi o'zgarishlar va yoki qandaydur ma'lumotlarni foydalanuvchiga bildirishga to'g'ri keladi. Foydalanuvchiga yangi tovar qo'shilgani, tovarga to'lov muvaffaqiyatli amalga oshgani hullas bir so'z bilan aytganda qandaydur xabarnoma jo'natish kerak. ]]></description><content:encoded><![CDATA[
  <p id="KNnc">Loyihani  yaratish davomida foydalanuvchilarga loyihadagi o&#x27;zgarishlar va yoki qandaydur ma&#x27;lumotlarni foydalanuvchiga bildirishga to&#x27;g&#x27;ri keladi. Foydalanuvchiga yangi tovar qo&#x27;shilgani, tovarga to&#x27;lov muvaffaqiyatli amalga oshgani hullas bir so&#x27;z bilan aytganda qandaydur xabarnoma jo&#x27;natish kerak. </p>
  <p id="qHyQ">Bu vazifani bajarish uchun bizzga kanallar kerak. Ya&#x27;ni qaysidur kanal orqali foydalanuvchiga ma&#x27;lumot beramiz. Laravelda quyidagi kanallar mavjud:</p>
  <ol id="zt2k">
    <li id="sYmT">Mail</li>
    <li id="6mJN">Sms</li>
    <li id="oI93">Slack</li>
    <li id="wzqT">Database</li>
  </ol>
  <p id="YPGF">Bunga qoshimcha tarzda comunity tomonidan ham juda ko&#x27;plab packagelar yaratilgan.</p>
  <p id="nD4y">Bu postimizda kichik blog yasab har bir post qo&#x27;shilganda foydalanuvchiga post qo&#x27;shilganligi haqida kichik notifikatsia jo&#x27;natamiz.</p>
  <p id="lxQk"></p>
  <p id="LedM"><strong>1. Post Table va Model.</strong></p>
  <p id="51FE"><code>php artisan make:model Post -m</code> </p>
  <pre id="pB6f" data-lang="php">  return new class extends Migration
  {
    /**
     * Run the migrations.
     *
     * @return void
     */
     public function up()
     {
        Schema::create(&#x27;products&#x27;, function (Blueprint $table) {
            $table-&gt;id();
            $table-&gt;string(&#x27;title&#x27;);
            $table-&gt;text(&#x27;body&#x27;);
            $table-&gt;string(&#x27;category_id&#x27;);
            $table-&gt;timestamps();
        });
     }
     /**
     * Reverse the migrations.
     *
     * @return void
     */
     public function down()
     {
         Schema::dropIfExists(&#x27;posts&#x27;);
     }
   };</pre>
  <p id="Txm0"></p>
  <p id="hR0T">Endi Post table uchun model yaratib olamiz:</p>
  <pre id="qeUt" data-lang="php">&lt;?php 
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Post extends Model
{
   use HasFactory;
   protected $fillable = [
      &#x27;title&#x27;,
      &#x27;body&#x27;,
      &#x27;category_id&#x27;
   ];
   
   public function category()
   {
      return $this-&gt;belongsTo(Category::class);
   }
}</pre>
  <p id="XbbE"></p>
  <p id="v4O2"><strong>2. Category Table va Model</strong></p>
  <p id="NGB7"><code>php artisan make:model Category -m</code></p>
  <pre id="uyf5" data-lang="php">&lt;?php 

return new class extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
     public function up()
     {
        Schema::create(&#x27;products&#x27;, function (Blueprint $table) {
            $table-&gt;id();
            $table-&gt;string(&#x27;name&#x27;);
            $table-&gt;timestamps();
        });
     }
     /**
     * Reverse the migrations.
     *
     * @return void
     */
     public function down()
     {
         Schema::dropIfExists(&#x27;categories&#x27;);
     }
 };</pre>
  <p id="odd9"></p>
  <p id="mtGi">Endi model yaratib olamiz</p>
  <pre id="dc5c" data-lang="php">&lt;?php
namespace App/Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;

class Category extends Model
{
   use HasFactory;
   protected $fillable = [
      &#x27;name&#x27;,
   ];
   
   public function post()
   {
      return $this-&gt;hasMany(Post::class);
   }
</pre>
  <p id="dhLX"></p>
  <p id="Jbpp"><strong>3.Notificationni projectga qo&#x27;shish</strong></p>
  <p id="QurX"><code>php artisan make:notification NewMessage</code></p>
  <p id="qB8p">Terminalga shu codene yozganimizdan so&#x27;ng <code>app/Notifications/NewMessage.php</code></p>
  <p id="dAvi">class yaratiladi. Endi bu class ichida nimalar bo&#x27;layotganiga e&#x27;tibor beramiz.</p>
  <pre id="N4vc" data-lang="php">public functionpublic function via($notifiable)
{
    return [&#x27;mail&#x27;]
}</pre>
  <p id="y5kC">Via methodi ichida arrayda notifikatsia driverlari qaytariladi. Qanday driverlar ishlatish odatda client hohishiga qarab bo&#x27;ladi.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@farruhmahkamov/error-handling</guid><link>https://teletype.in/@farruhmahkamov/error-handling?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov</link><comments>https://teletype.in/@farruhmahkamov/error-handling?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=farruhmahkamov#comments</comments><dc:creator>farruhmahkamov</dc:creator><title>Error handling. Qachon yordam so'rash kerak?</title><pubDate>Tue, 08 Mar 2022 12:40:34 GMT</pubDate><category>Errors</category><description><![CDATA[Dasturlashni o'rganish mobaynida bir qancha xatolarga duch kelamiz. Ba'zi bir xatolarni o'zimiz tuzata olmaymiz. Kegin qaysidur communitydan so'raymiz. U yerda kimdur shu savolni javobini bilsa javob beradi. Oramizda shundaylar borki o'zi izlanmasdan turib boshqalardan so'raydi. Bu holat barchamizda bo'lgan. Boshlanishida buni yomon tomoni yo'q. Lekin keyinchalik ham surinkali ravishda so'rayverish yaxshi emas.]]></description><content:encoded><![CDATA[
  <p id="hJxa">Dasturlashni o&#x27;rganish mobaynida bir qancha xatolarga duch kelamiz. Ba&#x27;zi bir xatolarni o&#x27;zimiz tuzata olmaymiz. Kegin qaysidur communitydan so&#x27;raymiz. U yerda kimdur shu savolni javobini bilsa javob beradi. Oramizda shundaylar borki o&#x27;zi izlanmasdan turib boshqalardan so&#x27;raydi. Bu holat barchamizda bo&#x27;lgan. Boshlanishida buni yomon tomoni yo&#x27;q. Lekin keyinchalik ham surinkali ravishda so&#x27;rayverish yaxshi emas.</p>
  <p id="JV8O">Odatda xatolarning javobi xatoning o&#x27;zida yashiringan bo&#x27;ladi.</p>
  <pre id="1JIS" data-lang="php">&lt;?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Api\WorkController;

Route::resource(&#x27;regions&#x27;, RegionController::class);

Route::controller(WorkController::class)-&gt;group(function() {    
  Route::get(&#x27;/works&#x27;, &#x27;index&#x27;);   
  Route::post(&#x27;/works&#x27;, &#x27;store&#x27;);});
?&gt;</pre>
  <p id="cnMf">Hozir shu code run qilinsa <code>RegionController</code> topilmadi degan xatolik keladi.</p>
  <p id="Bvwf">Demak Controllernu shunchaki <code>Use</code> qilib qo&#x27;yish kerak. Shu narsaniham boshqalarni asabi va vaqtini olib guruhga yozish menimcha yaxshi emas . Sal harakat qilib ko&#x27;rilsa deyarli 90% xatoning yechimini internettan topsa bo&#x27;ladi.</p>

]]></content:encoded></item></channel></rss>