Laravel 4和雄辩的质疑
我有4张桌子: 合伙人 使用者 电话 地址 用户登录后,我希望确保查询中只返回与他的(id)相关联的记录 因此,当我查询合作伙伴时,我不仅要返回合作伙伴匹配(id)的数据,还要确保用户(id)与合作伙伴中的fk(user_id)匹配 现在,更复杂的是,我想知道我是否可以查询合作伙伴(匹配id和用户id),并从相关的电话和地址表中获取他们的主要电话和主要地址。那么,这是否可能使用我在下面列出的雄辩和表格结构 partners控制器(PartnersController.php) 理想情况下,我只想从$data数组中提取phones表中与primaryPhone值匹配的一条记录。在确保用户_id与user()->id匹配的同时,这是否可行 视图(showone.blade.php) 我将如何在视图中显示该数据?如果手机是一个阵列(就像上面的一样),我想下面的方法可以奏效Laravel 4和雄辩的质疑,laravel,laravel-4,eloquent,Laravel,Laravel 4,Eloquent,我有4张桌子: 合伙人 使用者 电话 地址 用户登录后,我希望确保查询中只返回与他的(id)相关联的记录 因此,当我查询合作伙伴时,我不仅要返回合作伙伴匹配(id)的数据,还要确保用户(id)与合作伙伴中的fk(user_id)匹配 现在,更复杂的是,我想知道我是否可以查询合作伙伴(匹配id和用户id),并从相关的电话和地址表中获取他们的主要电话和主要地址。那么,这是否可能使用我在下面列出的雄辩和表格结构 partners控制器(PartnersController.php) 理想情况下,我只想
@foreach($phone as $ph)
<option value="{{ $ph->id }}"
@if($ph->id == $data->primaryPhone) {{ "selected" }}
@endif
> {{ $ph->number }} - {{ $ph->description }}</option>
@endforeach
表结构
首先,如果您使用blade作为模板,请停止制作这样的选择标记。使用“lists”方法获取包含键和值的数组。这将为您节省大量时间,并大大简化您的代码
关于是否可以只加载与主表中的电话行匹配的电话行:是。。。但是你在模型中建立了关系吗?将您的模型粘贴到此处我接受了您的建议,现在正在使用list()函数。这部分很好。现在,有没有办法只选择与fk primaryPhone匹配的电话号码?并将其放在partners数组中(而不是fk整数)?尚未测试,但是否尝试执行类似于
$phones=partners::find(1)->phone->list('phone',id')的操作代码>
@foreach($phone as $ph)
<option value="{{ $ph->id }}"
@if($ph->id == $data->primaryPhone) {{ "selected" }}
@endif
> {{ $ph->number }} - {{ $ph->description }}</option>
@endforeach
public function phone()
{
return $this->hasMany('Phone', 'partner_id')->where('user_id', Auth::user()->id);
}
public function primaryPhone($id)
{
return $this->has('Phone', 'id')->where('user_id', Auth::user()->id);
}
CREATE TABLE `partners` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL,
`firstName` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`lastName` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`spouseName` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`primaryPhone` int(11) NOT NULL,
`primaryAddress` int(11) NOT NULL,
`primaryEmail` int(11) NOT NULL,
`greeting` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`birthDate` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`spouseBirthDate` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`anniversary` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`notes` text COLLATE utf8_unicode_ci NOT NULL,
`profession` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`spouseProfession` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`pNewsletter` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`eNewsletter` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`partnerStatus` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`photoUrl` 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 `partners_id_unique` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `phones` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partner_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`number` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`description` 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 `phones_id_unique` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `addresses` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`partner_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`city` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`state` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`country` int(11) NOT NULL,
`postalcode` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`address_1` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`address_2` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`description` 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 `addresses_id_unique` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
CREATE TABLE `users` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`email` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`firstName` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`lastName` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`phoneNumber` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`password` 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 `users_id_unique` (`id`),
UNIQUE KEY `users_email_unique` (`email`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;