【发布时间】:2014-05-24 08:55:36
【问题描述】:
我有以下设置,三个表,tracks、tags 和 tag_track
tracks
CREATE TABLE `tracks` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`mdbid` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`track_no` int(11) NOT NULL,
`title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`sort_title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`safe_title` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`album_mdbid` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`deleted_at` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `tracks_mdbid_unique` (`mdbid`)
) ENGINE=InnoDB AUTO_INCREMENT=603 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
tags
CREATE TABLE `tags` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`mdbid` varchar(32) COLLATE utf8_unicode_ci NOT NULL,
`text` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
UNIQUE KEY `tags_mdbid_unique` (`mdbid`),
UNIQUE KEY `tags_text_unique` (`text`)
) ENGINE=InnoDB AUTO_INCREMENT=3376 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
tag_track
CREATE TABLE `tag_track` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`tag_mdbid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`track_mdbid` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`),
KEY `tag_track_tag_mdbid_index` (`tag_mdbid`),
KEY `tag_track_track_mdbid_index` (`track_mdbid`),
CONSTRAINT `tag_track_track_mdbid_foreign` FOREIGN KEY (`track_mdbid`) REFERENCES `tracks` (`mdbid`) ON DELETE CASCADE,
CONSTRAINT `tag_track_tag_mdbid_foreign` FOREIGN KEY (`tag_mdbid`) REFERENCES `tags` (`mdbid`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Track
class Track extends \Eloquent {
// Add your validation rules here
public static $rules = [
// 'title' => 'required'
];
// Don't forget to fill this array
protected $fillable = [];
public function album() {
return $this->belongsTo('Album', 'album_mdbid', 'mdbid');
}
public function getTags() {
return $this->hasMany('Tag', 'tag_track', 'tag_mdbid', 'track_mdbid');
}
}
Tag
class Tag extends \Eloquent {
// Add your validation rules here
public static $rules = [
// 'title' => 'required'
];
// Don't forget to fill this array
protected $fillable = [];
public function getTracks() {
return $this->hasMany('Track', 'tag_track', 'tag_mdbid', 'track_mdbid');
}
}
Routes
Route::get('/', function()
{
// When I uncomment the line below it finds the tag details
// $tag = Tag::where('mdbid', '=', 'mR3YQxbayRP1RwGzvEJvXe1BcFPukMSP');
$track = Track::find(1);
return $track->tags;
});
当我在浏览器中转到路线时,什么都没有显示
更新
我现在已经得到它显示正确数量的结果,但只有在将数据透视表更改为整数之后,在我使用 32 长度的字母数字字段之前。我怎样才能让它工作?
【问题讨论】:
标签: mysql laravel laravel-4 many-to-many eloquent