0
Em xin hỏi về vấn đề Many To Many (Polymorphic) trong Laravel với ạ !!!
Em có 3 table như sau
user
id
name
...
cities
id
name
multi_cities
id
city_id
model_type
model_id
Em thực hiện code liên kết các bảng như sau ạ
class User extends Authenticatable
{
use Notifiable;
public function cities()
{
return $this->morphToMany('App\City', 'model');
}
}
class City extends Model
{
protected $table = 'cities';
protected $fillable = ['name'];
public function users() {
return $this->morphedByMany('App\User', 'model');
}
public function jobs() {
return $this->morphedByMany('App\Job', 'model');
}
}
class MultiCity extends Model
{
protected $table = 'multi_cities';
protected $fillable = ['city_id', 'model_type', 'model_id'];
}
Em thử query trong route như sau:
Route::get('/user', function () {
$user = App\User::find(3);
foreach ($user->cities as $city) {
echo $city . '<br>';
}
});
Báo lỗi không tìm thấy table tương ứng với model Bác nào thông não e với )
Thêm một bình luận
2 CÂU TRẢ LỜI
public function cities()
{
return $this->morphToMany('App\City', 'model', 'multi_cities');
}
Thử xem được ko nhé.
@tiennguyen98 dạ được rồi a, e cảm ơn
+2
thay
public function cities()
{
return $this->morphToMany('App\City', 'model');
}
}
bằng
public function cities()
{
return $this->morphToMany('App\City', 'multi_cities');
}
}
tương tự với morphedByMany. Check docs nhá bạn: https://laravel.com/docs/5.8/eloquent-relationships#many-to-many-polymorphic-relations :v