在Laravel 5.1中,我可以看到表列关系可以通过两种方式设置:
1)在迁移表中定义外键.
2)定义模型中的雄辩关系.
我已阅读文件,我仍然对以下内容感到困惑:
我是否需要同时使用或仅需要1个?
同时使用两者是不对的吗?或者它是否使其多余或引起冲突?
使用Eloquent关系而不提及迁移列中的外键有什么好处?
有什么不同?
这些是我现在的代码.如果我需要删除我在迁移文件中设置的外键,我仍然不清楚.
移民:
public function up()
{
Schema::create('apps', function (Blueprint $table) {
$table->increments('id');
$table->string('app_name');
$table->string('app_alias');
$table->timestamps();
$table->engine = 'InnoDB';
});
// This is the second Migration table
Schema::create('app_roles', function (Blueprint $table) {
$table->increments('id');
$table->integer('app_id')->unsigned()->index();
$table->integer('user_id')->unsigned()->index();
$table->integer('role_id')->unsigned()->index();
$table->engine = 'InnoDB';
$table->unique(array('app_id', 'user_id'));
$table->foreign('app_id')
->references('id')
->on('apps')
->onDelete('cascade');
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
$table->foreign('role_id')
->references('id')
->on('roles')
->onDelete('cascade');
});
}
Run Code Online (Sandbox Code Playgroud)
具有雄辩关系的模型:
// App Model
class App extends Model
{
public function appRoles() {
return $this->hasMany('App\Models\AppRole');
}
} …Run Code Online (Sandbox Code Playgroud) 在Laravel 5.1中,对于MySQL插入,我想查看记录是否已经存在并在重复时更新,或者如果不存在则创建新的.
我已经搜索了那里的答案是旧的laravel版本.在其中一个老话题中,它说updateOrCreate()去年核心增加了一种新方法.但是当我尝试这个时,我收到了错误:
Integrity constraint violation: 1062 Duplicate entry '1' for key 'app_id'
Run Code Online (Sandbox Code Playgroud)
这是我使用的查询:
AppInfo::updateOrCreate(array(
'app_id' => $postData['appId'],
'contact_email' => $postData['contactEmail']
));
Run Code Online (Sandbox Code Playgroud)
app_id该表中的唯一外键在哪里,我想更新记录(如果存在)或创建新记录.我试过搜索5.1文档但找不到我需要的信息.有人可以在这里指导我吗...
关于是否使用Laravel的Notification或Mailable类,我有点困惑.根据我的理解,Mailables仅用于发送电子邮件,而通知可用于发送电子邮件和短信.在我的应用程序中,我暂时没有计划发送短信通知,所以如果我在这种情况下应该使用Mailable类,我很困惑.我的问题是:
如果我只是要发送电子邮件通知,我使用Mailables而不是Notifications更好吗?
如果每封电子邮件都有不同的html布局,那么Mailable会是更好的选择吗?
即使所有电子邮件都是通知电子邮件,使用Mailables而不是Notifications发送它们仍然有意义吗?
有人可以告诉我这两者之间的主要区别,以及我们应该如何决定在Laravel 5.3中发送电子邮件时选择哪种方法.
我有一个表格,我需要有2个或更多日期字段用于不同的事情.我尝试了Angular UI Bootstrap,当我在表单中只有一个日期字段时,它工作正常.但是,如果我有多个日期字段,它就会停止工作,我不知道更简单的方法让它工作.
这是我的HTML示例:
<label>First Date</label>
<div class="input-group">
<input type="text" class="form-control" datepicker-popup="{{format}}" name="dt" ng-model="formData.dt" is-open="opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
<span class="input-group-btn">
<button class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</div>
<label>Second Date</label>
<div class="input-group">
<input type="text" class="form-control" datepicker-popup="{{format}}" name="dtSecond" ng-model="formData.dtSecond" is-open="opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
<span class="input-group-btn">
<button class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
</span>
</div>
Run Code Online (Sandbox Code Playgroud)
我的JS是:
myApp.controller('DatePickrCntrl', function ($scope) {
$scope.today = function() {
$scope.formData.dt = new Date();
};
$scope.today();
$scope.showWeeks = true;
$scope.toggleWeeks = function () {
$scope.showWeeks = ! …Run Code Online (Sandbox Code Playgroud) javascript datepicker twitter-bootstrap angularjs angular-ui-bootstrap
由于将laravel从5.1升级到5.3,我在验证方面遇到了一些奇怪的问题.
当我发布这样的数据时:
firstName null
Run Code Online (Sandbox Code Playgroud)
验证规则如下:
$validator = Validator::make($postData, [
'firstName' => 'string|max:255',
'lastName' => 'string|max:255'
]);
Run Code Online (Sandbox Code Playgroud)
上面的消息失败了"The XYZ must be a string.".我不明白的是:
为什么验证失败时未设置为required?意思是,它应该忽略它,如果值为空则不抛出错误,对吧?
如果将值设置为null?,为什么验证失败?
为什么在根本没有发送参数时验证失败?(就像lastName根本没有张贴的那样)
Laravel 5.3验证中有什么变化吗?
如何转换(ISO8601格式): 2014-03-13T09:05:50.240Z
对此(以MySQL DATE格式): 2014-03-13
在PHP?
通常在Directives中,require: 'ngModel'如果我想将范围传递给它,我会使用它.这很好用.但我现在正在创建一个指令,该指令创建5个不同的HTML元素,每个元素都有不同的ngModel,它们是从父元素传递的.需要作为属性传递的ngmodel是ngModel1, ngModel2, ngModel3, ngModel4, ngModel5.如何require在指令内的条件中添加多个选项?
我试过这些并且它不起作用:
require: ['ngModel1', 'ngModel2', 'ngModel3', 'ngModel4', 'ngModel5'],
Run Code Online (Sandbox Code Playgroud)
和
require: {'ngModel1', 'ngModel2', 'ngModel3', 'ngModel4', 'ngModel5'},
Run Code Online (Sandbox Code Playgroud)
和
require: 'ngModel1', 'ngModel2', 'ngModel3', 'ngModel4', 'ngModel5',
Run Code Online (Sandbox Code Playgroud)
和
require: 'ngModel1, ngModel2, ngModel3, ngModel4, ngModel5'},
Run Code Online (Sandbox Code Playgroud)
如何添加多个需求选项?
HTML代码:
<div get-vehicles-checkbox
cars-ng-model="formData.cars"
bikes-ng-model="formData.bikes"
trucks-ng-model="formData.trucks"
van-ng-model="formData.van"
bus-ng-model="formData.bus"
></div>
Run Code Online (Sandbox Code Playgroud)
指示:
app.directive('getVehiclesCheckbox', function($compile) {
return {
restrict: 'A',
replace:true,
// require: ?
scope: {
carsNgModel: '=',
bikesNgModel: '=',
trucksNgModel: '=',
vanNgModel: '=',
busNgModel: '='
},
controller: 'SomeController',
link: function(scope, …Run Code Online (Sandbox Code Playgroud) javascript angularjs angularjs-directive angularjs-scope angular-directive
我试图在范围变量中存储HTML,然后在模板视图中使用它.当我正在阅读如何以棱角分明的方式做这件事时,我遇到了ng-bind-html.在那里我注意到,当我用,等等绑定html标签时<a>,<strong>它的工作原理.但我无法为其添加<input>标签.
这意味着,这有效:
$scope.myHtml = '<strong>This is <a hreaf="#">Something</a></strong>';
Run Code Online (Sandbox Code Playgroud)
模板:
<p ng-bind-html="myHtml"> </p>
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
$scope.myHtml = '<input type="text" />';
Run Code Online (Sandbox Code Playgroud)
模板:
<p ng-bind-html="myHtml"> </p>
Run Code Online (Sandbox Code Playgroud)
以上仅是用于演示目的的简化示例.我的问题是:
1)标签不适用于ng-bind-html指令吗?
2)如果没有,我如何html绑定输入标签,以便我可以将其插入视图?
在我的项目中,我使用Laravel纯粹作为后端api,所有前端都由Angular javascript处理.目前,Laravel路线可以直接访问,它会扼杀浏览器中显示的Json中的所有数据.我想对它进行限制,因此Laravel只响应Ajax请求而没有别的.
我在这里阅读了这篇文章,该文章为Laravel 4提供了一个解决方案,即通过添加限制filter.php.但是从Laravel 5.1开始,不再使用过滤器,我相信中间件可以用来做同样的事情.但是,我不知道如何在过滤器到中间件的过程中更改Laravel 4解决方案.
有人可以分享您如何防止直接访问Laravel 5.1路由的想法吗?
Laravel 4解决方案使用filter.php:在filter.php声明此过滤器:
Route::filter('isAJAX', function()
{
if (!Request::AJAX()) return Redirect::to('/')->with(array('route' => Request::path()));
});
Run Code Online (Sandbox Code Playgroud)
然后将您只想通过AJAX访问的所有路由放入一个组中.在您的routes.php中:
Route::group(array('before' => 'isAJAX'), function()
{
Route::get('contacts/{name}', ContactController@index); // Or however you declared your route
... // More routes
});
Run Code Online (Sandbox Code Playgroud) laravel laravel-routing laravel-filters laravel-middleware laravel-5.1
我是Angular和Joomla的新手,我正在学习atm.我想知道的是 - 是否可以在Joomla中集成Angular JS Application?从我读到的关于Joomla的内容来看,我理解这个cms可以轻松地从管理面板创建文章和管理内容和菜单.但是,由于Angular JS应用程序本身就是一个应用程序,因此文章页面无法使用.那么人们如何整合这个呢?
关于Angular App:
我的角色应用程序有点类似于Dan Wahlin的客户经理应用程序,该应用程序具有针对此应用程序的单独MySQL数据库,并使用php在Apache上进行服务器端处理.
尝试将Angular JS与Joomla集成的原因:
主要是,Joomla提供用户注册功能,用户权限管理等.开箱即用,我打算安装会员扩展.我只希望付费会员可以访问Angular App.这就是我想要实现的目标.
到目前为止我研究过的内容:
1)我查看了directPHP扩展,看看是否可以使用此ext插入Angular JS应用程序.但我认为这不会起作用,也不是正确的方法.
2)在搜索更多内容时,我遇到了这个Joomla教程,我不确定这是否适合它."开发MVC组件":http://docs.joomla.org/Developing_a_Model-View-Controller_%28MVC%29_Component_for_Joomla!2.5
如果有人可以指导我这些将极大地帮助我:
1)概述了如何将Angular App与Joomla集成,需要做什么,需求等......我理解解释这将超出SO的范围,但这里的一些指示将有所帮助.
2)向我展示我需要开始阅读的方式,以实现这一目标.我尝试使用谷歌搜索这个主题,我找不到任何教程,展示如何集成Angular和Joomla.
laravel ×5
angularjs ×4
javascript ×4
php ×3
eloquent ×2
laravel-5 ×2
laravel-5.3 ×2
mysql ×2
date ×1
datepicker ×1
datetime ×1
joomla ×1
laravel-5.1 ×1
laravel-mail ×1
ng-bind ×1
ng-bind-html ×1
ngsanitize ×1
sql ×1
validation ×1