我是laravel的新手,并试图用它制作相册.我的问题是我使用attach函数将用户ID和组ID插入我的数据库,它工作正常,但在文档中它说明了关于attach函数
例如,您希望附加到用户的角色可能已存在.只需使用attach方法:
所以我想以同样的方式使用它,如果album_id
已经存在只是更新它,其他明智的插入新的一个,但我的问题是它总是insters,它不检查是否album_id
已经存在
我的模特
class User extends Eloquent
{
public static $timestamps = false;
public function album()
{
return $this->has_many_and_belongs_to('album', 'users_album');
}
}
Run Code Online (Sandbox Code Playgroud)
发布功能
public function post_albums()
{
$user = User::find($this->id);
$album_id = Input::get('album');
$path = 'addons/uploads/albums/'.$this->id.'/'. $album_id . '/';
$folders = array('path' => $path, 'small' => $path. 'small/', 'medium' => $path. 'medium/', );
if (! is_dir($path) )
{
foreach ($folders as $folder)
{
@mkdir($folder, 0, true);
}
}
$sizes = array(
array(50 , 50 , 'crop', $folders['small'], 90 ),
array(164 , 200 , 'crop', $folders['medium'], 90 ),
);
$upload = Multup::open('photos', 'image|max:3000|mimes:jpg,gif,png', $path)
->sizes( $sizes )
->upload();
if($upload)
{
$user->album()->attach($album_id);
return Redirect::back();
}
else
{
// error show message remove folder
}
}
Run Code Online (Sandbox Code Playgroud)
可以请有人指出我做错了什么?或者我完全误解了附加功能?
我相信你误解了附加功能.同步功能使用附加来添加关系,但前提是该关系尚不存在.按照那里所做的,我建议拉一个id列表,然后只插入列表中尚不存在的内容.
$current = $user->album()->lists( 'album_id' );
if ( !in_array( $album_id, $current ) )
{
$user->album()->attach( $album_id );
}
Run Code Online (Sandbox Code Playgroud)
另外,我建议您遵循laravel的默认命名约定.关系方法应该是$ user-> albums(),因为它们中有很多.数据透视表也应命名为"album_user".你以后会感谢自己.
谢谢@Collin,我注意到我误解了我昨天做了检查
$album = $user->album()->where_album_id($album_id)->get();
if(empty($album))
{
$user->album()->attach($album_id);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8265 次 |
最近记录: |