با عرض سلام من یک منو در قسمت سایت فروشگاه لاراولیم دارم که به مشکل برخوردم برای ساختش . ابتدا ادمین برای ساخت این منو میاد یک برند میسازه و بعد برای اون برند در یک دیتابیس جدا یک دسته مادر (parent) درست میکنه که در دیتابیس دسته مادر brand_id ذخیره میشه و حالا میخام با ریلیشن این موارد را در منو فراخوانی کنم ولی به مشکل برخوردم.
منوی مد نظرم هم به شکل زیر هست:
اپل سامسونگ
آیفون موبایل
ساعت ساعت
این منوی من هست که به این شکل طراحی شده :
<div class="row">
<div class="col-8">
<ul>
<li><a class="dropdown-item text-dark" href="#"> <h5>Apple</h5> </a></li>
<hr>
<li><a class="dropdown-item text-dark" href="#">iphone</a></li>
</ul>
</div>
<div class="col-4">
<img src="{{asset('image/w-watch.png')}}" class="img-fluid rounded" alt="">
</div>
</div>
این مدل برند هست ریلیشنش با دسته مادر :
public function parent()
{
return $this->belongsTo(parents::class);
}
مدل دسته مادر :
public function brand()
{
return $this->belongsTo(brands::class);
}
دوستان اگر کمکم کنید ممنون میشم واقعا .
@mpoorkamaly
سلام ، ابتدای کار باید بگم ک اسم مدل هاتونو دارید اشتباه وارد میکنید اسم مدل باید فرد باشه نه جمع مثلا brands اشتباس و باید Brand باشه و حرف اول بزرگ ،
و اینک باید از belongstomany استفاده کنید چون ظاهرا رابطه چند به چند هست
@arminrahmati999
سلام ببینید من این شکلی ساختار را درست کردم که یک برند داریم مثلا اپل بعد یک parent میسازیم که میشه موبایل یا ساعت بعد این parent وابسته به برند هست یعنی توی دیتابیس parent یک brand_id داریم بعد یک category درست کردم که توی اون کاربر میگه این دسته بندی iphone 11 یا apple watch serie 3 هستد که این وابسته به parent هست و توی جدولش یک parent_id هست . الان من میخام توی این منو برند و parent های مربوط بهم زیرش بیاد ولی نمیدونم چه شکلی !!
درود بر شما
چند مساله رو به نظرم ممکنه ک اشتباه در نظر گرفته باشید .
مساله اول اینکه لاراول به طور پیشفرض توی نامگذاری مدل ها و جدول دیتابیس اونها از قواعد زبان انگلیسی پیروی میکنه.
پس در واقع شما وقتی که قصد دارید توی جدول brands دنبال چیزی بگردید باید مدل مورد نظر رو به صورت اسم منفرد یعنی brand صدا بزنید.
در غیر اینصورت لاراول به صورت پیشفرض متوجه منظور شما نمیشه.
نکته بعدی این هست که وقتی بین دو مدل رابطه وابستگی ایجاد میکنید یعنی در واقع یکی از این مدل ها تحت مالکیت هست و مدل دیگه مالک محسوب میشه پس شما برای درست تنظیم کردم این رابطه باید در مدل brand از متد hasOne ویا hasMany استفاده کنید که یعنی هر برند مالک یک یا چندین parent هست.
و در کلاس parent به همین نحوی که عمل کردید میتونید ادامه بدید یعنی متد belongsTo.
public function parent()
{
return $this->hasOne(parent::class);
}
درود...
آموزش کامل ساخت دسته بندی لاراول
پیوند زیر:
https://jobteam.ir/ProductUser/109-Laravel-Category-parent-child
ببینید شما اول باید بیاین جدول categories رو به این صورت تعریف کنید:
Schema::create('categories', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->unsignedBigInteger('category_id')->nullable();
$table->foreign('category_id')->references('id')->on('categories')->onUpdate('CASCADE')->onDelete('CASCADE');
$table->timestamps();
});
مدل Category:
public function parent() {
return $this->belongsTo(Category::class, 'category_id');
}
public function getParentName() {
return is_null($this->parent) ? 'ندارد' : $this->parent->name;
}
اگه بازم سوالی بود، بپرسین.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟