我目前正在为我们团队的项目设计数据库结构.我目前心中有这样一个问题:是否有可能将外键作为另一个表的主键?
以下是我们系统数据库设计的一些表格:
user_accounts
students
guidance_counselors
Run Code Online (Sandbox Code Playgroud)
我想要发生的是,该user_accounts
表应包含ID(据称是系统的登录凭证)以及学生用户和指导顾问用户的密码.简而言之,students
和guidance_counselors
表的主键也是表中的外键user_accounts
.但我不确定是否允许.
另一个问题是:student_rec
还存在一个表,它需要一个student_number
(user_id
在user_accounts
表中)和一个guidance_counsellor_id
(也在user_id
其中user_accounts
)的每个记录.如果学生和辅导员的ID都来自user_accounts table
,我将如何设计student_rec
表格?为了将来参考,我如何手动将其编写为SQL代码?
这一直困扰着我,我找不到任何具体或肯定的答案.
我是iOS新手,我仍在努力掌握一些事情.我在XCode 5中尝试这个简单的程序,当用户点击按钮时,他将被重定向到另一个视图控制器.我做了其他论坛告诉其他人做的事情,但我似乎遇到了一个错误.
这是我的代码:
在ViewController.m中:
- (IBAction)button1:(id)sender {
WebServiceViewController *wc = [[WebServiceViewController alloc]
initWithNibName:@"WebServiceViewController"
bundle:nil];
[self.navigationController pushViewController:wc animated:YES];
}
Run Code Online (Sandbox Code Playgroud)
我在标题中放置了一个导入"WebServiceViewController.h".
这是错误(不是IDE错误消息,但也不是成功):
这是一个例外:
2013-10-25 02:05:51.904 sample[16318:a0b] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/Guest/Library/Application Support/iPhone Simulator/7.0/Applications/C6FA1F33-5E11-40C2-8C69-DA368F21CA5F/sample.app> (loaded)' with name 'WebServiceViewController''
*** First throw call stack:
(
0 CoreFoundation 0x017345e4 __exceptionPreprocess + 180
1 libobjc.A.dylib 0x014b78b6 objc_exception_throw + 44
2 CoreFoundation 0x017343bb +[NSException raise:format:] + 139
3 UIKit 0x004ca65c -[UINib instantiateWithOwner:options:] + 951
4 …
Run Code Online (Sandbox Code Playgroud) 我在iOS应用程序中从Web服务获取数据时遇到问题.我有一个名为LoginService的NSObject类.当用户单击Login时,将从ViewController调用LoginService的loginWithUsername方法.
在我的LoginService中,我创建了一个名为LoginServiceDelegate的委托.以下是LoginService.h中的代码:
//Creating custom delegate
@protocol LoginServiceProtocol <NSObject>
-(void)loginResult:(NSDictionary*)loginData;
@end
@interface LoginService : NSObject<NSURLConnectionDataDelegate>{
NSMutableData* _responseData;
id<LoginServiceProtocol>_delegate;
}
@property(nonatomic,strong)id<LoginServiceProtocol>delegate;
//End of custom delegate creation
Run Code Online (Sandbox Code Playgroud)
在LoginService.m中实现:
-(void)loginResult:(NSDictionary*)loginData{
NSLog(@"%@",loginData);
}
Run Code Online (Sandbox Code Playgroud)
现在我的LoginService也是NSURLConnection的委托.调用委托方法connectionDidFinishLoading后,获取的数据将使用JSON转换为NSDictionary并传递给loginResult.它适用于LoginService,正在记录所提取的数据.
现在我的问题是我试图设置例如,从ViewController.m中的Login按钮下的标签获取数据的值.这只是尝试我是否可以通过LoginService委托成功获取数据.问题是,我做不到.ViewController已经成为LoginService的委托.我在viewDidLoad方法和loginWithUserName方法中都尝试了它,这是按下登录按钮时调用的方法.
我在ViewController.m的viewDidLoad方法中有这个代码:
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
LoginService *ls = [[LoginService alloc]init];
ls.delegate=self;
[ls loginResult];
}
Run Code Online (Sandbox Code Playgroud)
首先,我尝试将标签的文本设置为登录结果,但由于我失败了,我有这个代码只是为了看看是否在ViewController.m中调用了LoginService委托方法:
- (void)loginResult:(NSDictionary *)loginData{
NSLog(@"reached");
}
Run Code Online (Sandbox Code Playgroud)
这可能是一个非常基本的问题,但我对iOS编程非常陌生,这让我感到很困惑.我真的希望有人可以帮助我.
我刚刚将Laravel的数据库层Eloquent包含在我的CodeIgniter 3项目中.然而,我的问题是我无法使用Eloquent模型连接到多个数据库.
对于默认DB,这是我配置DB的方式:
$capsule = new Capsule;
$capsule->addConnection(array(
'driver' => 'mysql',
'host' => "localhost",
'database' => "employees_db",
'username' => "root",
'password' => "",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
));
$capsule->setAsGlobal();
$capsule->bootEloquent();
Run Code Online (Sandbox Code Playgroud)
以上效果很好.但我有一个来自另一个数据库的员工表.我可以使用查询构建器来使用它,但是使用Eloquent模型会失败.
我试过这个:
$employees = new Capsule;
$employees->addConnection(array(
'driver' => 'mysql',
'host' => "host2",
'database' => "employees_db",
'username' => "user",
'password' => "pass",
'charset' => 'utf8',
'collation' => 'utf8_unicode_ci',
'prefix' => '',
),'employees');
$employees->setAsGlobal();
Run Code Online (Sandbox Code Playgroud)
尝试设置一个Eloquent模型并使用如下连接:
protected $connection = "employees";
Run Code Online (Sandbox Code Playgroud)
是否可以使用Laravel之外的Illuminate\Database Eloquent ORM连接到多个数据库?如果有,怎么样?
无论如何,当文档完全加载时,我是否运行某个PHP函数?我正在尝试运行一个函数,它会在完全加载文档时将通知标记为只读.我能做什么?
所以我在我的网站上有这个textarea.默认情况下,它的内容如下:
Name : Sample Value
Age : Sample Value
Location : Sample Value
Run Code Online (Sandbox Code Playgroud)
在用户点击按钮并将其插入数据库之前,它是可编辑的,尽管我没有使用富文本编辑器,因为它只是一个简单的文本.
由于基本HTML代码在textarea标签内不是浏览器可读的,因此我习惯
将行分开.
现在我的问题是,当我在服务器端读取textarea标签的值时,我无法包含HTML代码.
因此,插入到数据库中的值也不是HTML格式的,并且当它再次被提取到Web浏览器中时,它根本没有格式.
我有什么替代品?谢谢.
我正在尝试检查用户上传的excel文件是否具有正确的列/第一行/属性,然后再读入其他行.我正在使用Laravel 4和MaatWebsite的 Laravel Excel.
我创建了一个函数,允许用户通过导入excel文件来更新系统数据库的employee表.
现在正确的Excel文件,有,比方说,3列:firstname
,lastname
,和username
.如果excel文件具有所有这些属性/列,我现在将读取以下每一行并验证每一行,这实际上不是我现在问题的一部分.
但是如果excel文件中没有3个属性/列中的任何一个,我将忽略该请求并返回错误.
我尝试使用它,它获取lastname
属性:
$sample = Excel::selectSheetsByIndex(0)->load($readFile, function($reader){})->get(array("lastname"));
Run Code Online (Sandbox Code Playgroud)
但即使lastname
没有找到,$ sample仍然不为空,所以我无法检查是否lastname
存在.
如何检查属性/列是否存在?
更新:
如果属性行之后的第一行具有所有需要的属性,那么我选择的答案将完美地运行.例如:如果有值firstname
,lastname
和username
.
但是,如果first name
缺少第一个非属性行(引用列名的属性行)的值(或任何attritbute值),则提供的脚本将返回false,即使excel文件具有所有firstname
,lastname
和username
属性.
所以我将脚本修改为:
$excelChecker = Excel::selectSheetsByIndex(0)->load('path/to/file', function($reader){})->get()->toArray();
$excelIsValid = false;
Run Code Online (Sandbox Code Playgroud)
然后我循环遍历所有的结果,并检查是否至少一次,全部所需要的值(firstname
,lastname
,和username
)已经被设置或都存在.
foreach($excelChecker as $ex){
if(isset($ex["lastname"]) && isset($ex["firstname"]) && isset($ex["username"])){
$excelIsValid = true;
}
}
Run Code Online (Sandbox Code Playgroud)说明:
如果$excelIsValid
仍然false …
我很擅长使用Laravel,因此对Eloquent来说.我对Eloquent的桌子关系感到困惑.
现在我了解了如何实现简单连接,例如Laravel 4.2文档中的示例,该文档对于一对多关系,其中a comment
属于一个post
,但a post
可以有很多comments
.他们使用这种语法从一篇文章中获取评论:
Post::find(1)->comments;
Run Code Online (Sandbox Code Playgroud)
在MySQL中,它可能是:
SELECT * FROM comments
JOIN posts ON posts.id=comments.post_id
WHERE posts.id=1
Run Code Online (Sandbox Code Playgroud)
如果我想要得到的结果是这样的,不仅仅是一行:
SELECT * FROM comments
JOIN posts ON posts.id=comments.post_id
Run Code Online (Sandbox Code Playgroud)
根据我上面给出的例子,我知道它没有多大意义.但是我如何在Eloquent中做到这一点?
为了提供更多细节,我实际上要做的是显示我的两个表的连接结果,assets
以及asset_classifications
.一个asset
属于一个asset_classification
,并且asset_classification
有许多assets
.
我正在尝试显示assets
包含其中的表格数据asset_classifications
.在MySQL中,它是这样的:
SELECT * FROM assets
JOIN asset_classifications ON asset_classifications.id=assets.classification_id
Run Code Online (Sandbox Code Playgroud)
我怎样才能在Eloquent中执行它?
eloquent ×2
ios ×2
laravel ×2
laravel-4 ×2
objective-c ×2
php ×2
cocoa ×1
database ×1
delegates ×1
foreign-keys ×1
html ×1
javascript ×1
mysql ×1
phpexcel ×1
primary-key ×1
sql ×1
xcode ×1