• مهندسی کامپیوتر
    • سیستم عامل
    • طراحی الگوریتم
    • ساختمان داده
    • پایگاه داده
    • مهندسی نرم افزار
    • گرافیک کامپیوتری
    • بازی سازی
    • پردازش تصویر
    • طراحی وب
    • رمزنگاری
  • هوش مصنوعی
    • الگوریتم های یادگیری ماشین
    • شبکه های عصبی مصنوعی
    • الگوریتم های فرا ابتکاری
    • هوش مصنوعی
    • داده کاوی
  • شبکه های کامپیوتری
    • شبکه های حسگر بی سیم
    • شبکه های خودرویی
    • شبکه های موردی
    • شبکه های کامپیوتری
  • تحقیق و پژوهش
    • عمومی
    • تکنولوژی
    • زبان های برنامه نویسی
    • مشاهیر و اشخاص
    • اینترنت اشیاء
    • واقعیت مجازی
    • ارز دیجیتال
    • کسب و کار
    • علوم
  • رشته های مهندسی
    • مهندسی برق
    • مهندسی عمران
    • مهندسی معماری
  • قالب پاورپوینت پایانامه
  • مجله پی استور
  • ابزارهای آنلاین
    • برنامه نویسی آنلاین
    • تبدیل مبنای آنلاین
  • آموزش برنامه نویسی
  • آموزش الگوریتم
  • آموزش شبکه
  • آموزش عمومی

ورود

رمز عبور را فراموش کرده اید؟

هنوز عضو نشده اید؟ عضویت در سایت
  • درباره ما
  • تماس با ما
  • سفارش تدریس آنلاین
پی استور
0

ورود و ثبت نام

مقالات آموزشی
  • مهندسی کامپیوتر
    • سیستم عامل
    • طراحی الگوریتم
    • ساختمان داده
    • پایگاه داده
    • مهندسی نرم افزار
    • گرافیک کامپیوتری
    • بازی سازی
    • پردازش تصویر
    • طراحی وب
    • رمزنگاری
  • هوش مصنوعی
    • الگوریتم های یادگیری ماشین
    • شبکه های عصبی مصنوعی
    • الگوریتم های فرا ابتکاری
    • هوش مصنوعی
    • داده کاوی
  • شبکه های کامپیوتری
    • شبکه های حسگر بی سیم
    • شبکه های خودرویی
    • شبکه های موردی
    • شبکه های کامپیوتری
  • تحقیق و پژوهش
    • عمومی
    • تکنولوژی
    • زبان های برنامه نویسی
    • مشاهیر و اشخاص
    • اینترنت اشیاء
    • واقعیت مجازی
    • ارز دیجیتال
    • کسب و کار
    • علوم
  • رشته های مهندسی
    • مهندسی برق
    • مهندسی عمران
    • مهندسی معماری
  • قالب پاورپوینت پایانامه
  • مجله پی استور
  • ابزارهای آنلاین
    • برنامه نویسی آنلاین
    • تبدیل مبنای آنلاین

رابطه یک به یک در لاراول

خانهفروشگاهزبان های برنامه نویسیرابطه یک به یک در لاراول
تنظیمات دیتابیس در لاراول 6

یکی از عناصر اساسی فریم ورک لاراول، الوکوئنت Eloquent ORM  است. لاراول برای برقرار کردن رابطه بین دو یا چند جدول در دیتابیس از Eloquent ORM استفاده می کند. این فریم ورک محبوب برای ایجاد ارتباط بین مدل های الوکوئنت، روش های کابر پسند بسیاری فراهم نموده است. در این جلسه یکی از این رابطه ها بنام رابطه یک به یک در لاراول با یک مثال عملی، مورد مطالعه قرار می گیرد.

آموزش رابطه یک به یک در لاراول One To One

در آموزش لاراول، رابطه یک به یک در لاراول، ساده ترین و بنیادی ترین نوع ارتباط می باشد. استفاده از این رابطه بسیار آسان و کاربردی است. رابطه یک به یک در لاراول یک ستون از یک جدول پایگاه داده را به تنها یک ستون از جدولی دیگر پیوند می دهد.

 برای مثال فرض کنید جدولی داریم به نام users که برای احراز هویت کاربران، به کار می رود. می خواهیم اطلاعات دیگر کاربر از قبیل تاریخ تولد، بیو و آدرس شبکه های اجتماعی را نیز ذخیره کنیم. می توانیم این اطلاعات را در همان جدول users در داخل 4 ستون دیگر ذخیره کنیم. اما با این کار جدول users شلوغ و اندکی کثیف خواهد شد.

برای تمیز نگه داشتن جداول، می خواهیم نام و کلمه عبور و ایمیل کاربران را در جدول users  و اطلاعات پروفایل کاربر را در جدولی دیگر بنام profiles ذخیره کنیم.

می دانیم که باید هر کاربر تنها یک profile  خواهد داشت و هر profile تنها متعلق به یک user  خواهد بود.

ایجاد مدل ها و جداول

می دانیم که هنگام نصب لاراول، مدل User و مایگریشن users بصورت اتوماتیک در پروژه ایجاد می شود و ما فقط نیاز به ایجاد مدل Profile و مایگریشن اش می باشیم. می توانیم با یک دستور هر دو را بسازیم :

php artisan make:model Profile -m

سپس برای ایجاد رابطه یک به یک migration مربوط به جدول profiles را هم باز می کنیم و اینگونه تغییر می دهیم :

public function up()
{
    Schema::create('profiles', function (Blueprint $table) {
        $table->bigIncrements('id');
        $table->bigInteger('user_id')->unsigned()->index();
        $table->date('dob');
        $table->text('bio');
        $table->string('instagram');
        $table->timestamps();

        $table->foreign('user_id')->references('id')->on('users')
              ->onDelete('cascade')->onUpdate('cascade');
    });
}

کلید خارجی یا foreign key

در خط پنجم اقدام به تعریف کلید خارجی یا foreign key می کنیم. کلید خارجی وظیفه اتصال و ارتباط دو جدول را به عهده دارد و هنگام ثبت یک profile جدید، مقدار این کلید دقیقا برابر id  مربوط به  user مربوط به این   profileخواهد بود. نوع این کلید باید با id  جدول users مطابقت داشته باشد زیرا این کلید به آن id  اشاره می کند. مثلا در این مورد چون نوع id  در جدول users برابر با bigIncrements بود، نوع کلید خارجی را هم bigInteger قرار دادیم.

در خطوط آخر دقیقا اشاره کردیم که کلید خارجی مربوط به کدام ستون از کدام جدول است :

$table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')
->onUpdate('cascade');

عبارت های OnDelete هم اشاره می کنند که هنگام حذف یک user پروفایلش نیز از جدول profiles حذف گردد.

سپس دستور زیر :

php artisan migrate

بررسی رابطه یک به یک در phpmyadmin :

اگر در phpmyadmin روی دیتابیس تان کلیک کرده و به سربرگ یا همان منوی Designer  بروید با شکل زیر مواجه خواهید شد :

این شکل نشانگر ارتباط بین دو جدول و نیز ارتباط ستون id از جدول users  و ستون user_id از جدول profiles است. درواقع این ارتباط زمانی ایجاد شد که کلید خارجی تعریف کردیم. این شکل به خوبی نشان می دهد که user_id همان id در است.

تعریف رابطه یک به یک :

در  مدل User  متد زیر را تعریف می کنیم  :

public function profile()
{
    return $this->hasOne(Profile::class);
}
</pre>
در مدل Profile  :
<pre class="lang:php decode:true ">class Profile extends Model
{

   protected $fillable = ['dob', 'bio' , 'instagram'];


    public function user()
    {
        return $this-&gt;belongsTo(User::class);
    }
}

فراخوانی اطلاعات از رابطه OneToOne لاراول

حال که رابطه بین دو جدول را برقرار کرده اید می توانید به اطلاعات پروفابل هر کاربر با صدا زدن متد profile البته بدن پرانتز دسترسی پیدا کنید :

$user = User::find(1);
$userInsta = $user-&gt;profile-&gt;instagram;
$userBio = $user-&gt;profile-&gt;bio;

 لاراول برای فراخوانی پروفایل کاربر، به جدول profiles سر زده و در ستون user_id دنبال عددی برابر id  کاربر خواهد گشت.

ایجاد رابطه یک به یک برای user

برای ایجاد پروفایل برای یک کاربر می توان از دو روش استفاده کرد :

روش اول : استفاده از متد save()

$profile = new Profile();
$profile-&gt;dob = '1987-01-20';
$profile-&gt;bio = 'Laravel Student';
$profile-&gt;instagram = 'laraveltop';

$user = User::first();
$user-&gt;profile()-&gt;save($profile);

روش دوم : استفاده از متد create()

$user = \App\User::first();
$user-&gt;profile()-&gt;create([
    'dob' =&gt; '2000-11-03',
    'bio' =&gt; 'I am Laravel Student',
    'instagram' =&gt; 'laraveltop'
]);

حذف رابطه یک به یک از user

حذف پروفایل یک کاربر همانند ایجاد ارتباط برای آن است. با این تفاوت که به جای متد create از متد delete استفاده خواهیم کرد :

$user = User::first();
$user-&gt;profile()-&gt;delete();

حال اگر dd بگیریم :

dd(User::first()->profile);

عبارت null در صفحه را مشاهده خواهید نمود.

نکته

چون هنگام تعریف کلید خارجی از عبارت onDelete(‘cascade’)  استفاده کردیم، هنگام حذف یک کاربر، پروفایل آن نیز از جدول profiles  حذف خواهد شد.

 

برای مشاهده جلسه چهاردهم (رابطه یک به چند در لاراول) کلیک کنید.


مشخصات فیلم آموزشی

نام اثر : فیلم آموزش صفر تا صد لاراول – جلسه سیزدهم: رابطه یک به یک در لاراول

 مدرس : مهندس سالار عباپور

مدت زمان : 37 دقیقه

زبان آموزش : فارسی

حجم فایل : یک فایل با حجم 110 مگا بایت

فرمت ویدئو : MP4 با کیفیت بالا


پیش نمایش

درباره محصول

فیلم آموزش صفر تا صد لاراول – جلسه سیزدهم: رابطه یک به یک در لاراول 6 محصولی است که در این پست به آن پرداخته شده است.  در این آموزش به توضیح و معرفی رابطه ها در لاراول پرداخته شده است است. این محصول بصورت کامل توسط گروه پشتیبانی پی استور تست و بازبینی شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد.

امتیاز
5.00 از 1 رأی
5.00 1 رای
49,000 تومان
تاریخ انتشار: 29 آذر 1398
تاریخ بروزرسانی: 5 شهریور 1399
حجم فایل: 110 مگابایت
فرمت فایل mp4
نسخه: 1.0
شناسه اثر: ندارد
هماهنگی با: laravel7
دانلود شده توسط: 0 نفر

تاکنون 0 نفر این محصول را تهیه کرده اند و 1 نظر برای آن ثبت شده است.

نظرات و دیدگاه ها
  • مدیریت و پشتیبانی
    29 بهمن 1398
    امتیاز 5 از 5
    پاسخ

    نظرات و پیشنهادات خود را با ما در میان بگذارید.

قوانین ثبت دیدگاه

  • لطفاً دیدگاه های خود را فارسی تایپ کنید.
  • دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
  • از درج دیدگاه های تکراری پرهیز نمایید.
  • سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.

لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دسته‌بندی موضوعی: زبان های برنامه نویسی
برچسب: لاراول

قیمت 49,000 تومان

افزودن به علاقه مندی ها
امتیاز
5.00 از 1 رأی
5.00 1 رای
49,000 تومان

تاریخ انتشار: 29 آذر 1398
تاریخ بروزرسانی: 5 شهریور 1399
حجم فایل: 110 مگابایت
فرمت فایل mp4
نسخه: 1.0
شناسه اثر: ندارد
هماهنگی با: laravel7
دانلود شده توسط: 0 نفر

1 بازخورد (مشاهده نظرات)

قیمت: 49,000 تومان

تماس با ما
  • دفتر پشتیبانی: 04144225175 (ساعت کاری 8:00 الی 16:00)
  • آی دی تلگرام: programerPstore
درباره پی استور

تیم توسعه پی استور با هدف ارائه مطالب مفید علمی در گرایش های مختلف پروژه های علمی مختلف را جمع آوری می کند و در قالب یک محصول تست شده و قابل اجرا همراه با توضیحات و نحوه اجرا، انتشار می دهد. امید است با عنایت الهی و کوشش اساتید و دانشجویان همراهمان بتوانیم قدم کوچکی در تولید محتوای علمی کشور داشته باشیم.

مجوز های اخذ شده
اینماد نشان ملی   پروانه نشر دیجیتال
  • حساب کاربری من
  • سوالات متداول
  • راهنمای خرید و دانلود
پی استور
  • همکاری با ما
  • قوانین و مقررات
  • حریم خصوصی
تمامی حقوق برای پی استور محفوظ است.
keyboard_arrow_up