Get Original Attribute for Eloquent Model Laravel 9

Nay mình chia sẻ các bạn có thể lấy các column trong pivot của mối quan hệ many to many của Laravel. Thông thường ta có kiểu kết nối như sau:

//Product Model
class Product extends Model
{
    public function languages(){
        return $this->belongsToMany("App\Models\Language","product_language","product_id","language_id")->withPivot('title', 'keyword', 'description', 'body')
        ->withTimestamps();;

    }
}

//Language Model
class Language extends Model
{
    public function products(){
        return $this->belongsToMany('App\Models\Product','product_language','product_id','language_id');

    }
}

Ta nhìn thấy đoạn code bên trên , có các cột ("title, keyword, description, body") được tạo trong bảng phụ là "product_language"

VD: mính sẽ show tất cả các giá trị của eloquent của mối liên kết nhiều nhiều trên cho bạn xem

 $lang = Language::where('code', $request->lang)->first();
 $product_lang =$product->languages()->where("id",$lang->id)->first();
dd($product_lang);

Bạn sẽ nhìn thấy các thứ mình trỏ mũi tên đỏ như sau:

Nếu bạn muốn lấy giá trị thì phải sử dụng đến câu lệnh trỏ tới pivot để lấy các giá trị bên trong 

$product_lang->pivot->title

Còn nếu bạn muốn rút ngắn gon câu lệnh hơn bạn có thể sử dụng câu lệnh dưới đây, lấy cũng được

$product_lang->getOriginal()['pivot_title'];
//or
$product_lang->getOriginal('pivot_title');
//hoặc bạn muốn show tất cả
$product_lang->getOriginal();

Nhưng có điều title nó bị thay đổi thành pivot_title , bên trên là cách giúp mọi người có thể lấy giá trị trong bản phụ của mối quan hệ nhiều nhiều(many to many) trong Laravel, Bạn có thể thử các phiên bản Laravel khác như Laravel 5, 6,7,8,10

 

Bài Viết Liên Quan

Messsage

Nếu bạn thích chia sẻ của tôi, đừng quên nhấn nút !ĐĂNG KÝ