我正在尝试更新Laravel中一对多关系的关系.不幸的是我找不到任何文件.谁能帮我?
这是我到目前为止:
class Account extends Eloquent
{
public function users()
{
return $this->hasMany('User');
}
}
class User extends Eloquent
{
public function account()
{
return $this->belongsTo('Account');
}
}
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试更新从USER(1)> ACCOUNT(50)到USER(1)> ACCOUNT(99)的关系.我该怎么做?我尝试了以下方法:
$account = Account::find(99);
User::find(1)->account()->save($account);
Run Code Online (Sandbox Code Playgroud)
但这不起作用:-(任何帮助深深感激!!
更新:
以下作品:
$user = User::find(1);
$user->account_id = 99;
$user->save();
Run Code Online (Sandbox Code Playgroud)
......但是必须有一个比上面更好的解决方案,对吗?
它与save()和attach()方法在多对多关系中工作,以更新表之间的关系(来自关系的两侧).在一对多关系中,似乎不支持attach()方法.
如何在beforeEnter中访问通过商店操作异步检索的商店数据?
import store from './vuex/store';
store.dispatch('initApp'); // in here, async data will be fetched and assigned to the store's state
// following is an excerpt of the routes object:
{
path: '/example',
component: Example,
beforeEnter: (to, from, next) =>
{
if (store.state.asyncData) {
// the above state is not available here, since it
// it is resolved asynchronously in the store action
}
}
}
Run Code Online (Sandbox Code Playgroud)
这在第一页加载或页面重新加载之后,获取初始化数据并且路由器需要等待该数据允许用户访问该页面时尤为重要.
路由器是否可以"等待"获取数据?或者,与异步vuex商店数据相结合处理导航防护的最佳方法是什么?
(哦和预填充"asyncData"不能解决,因为beforeEnter挂钩需要从数据库做出真实数据的决定,而不是默认数据)
是否可以通过.html()函数获取具有更新值属性的表单的html?
(简化)HTML:
<form>
<input type="radio" name="some_radio" value="1" checked="checked">
<input type="radio" name="some_radio" value="2"><br><br>
<input type="text" name="some_input" value="Default Value">
</form><br>
<a href="#">Click me</a>
Run Code Online (Sandbox Code Playgroud)
jQuery:
$(document).ready(function()
{
$('a').on('click', function() {
alert($('form').html());
});
});
Run Code Online (Sandbox Code Playgroud)
这是我想要做的一个例子:http: //jsfiddle.net/brLgC/2/
更改输入值并按"click me"后,它仍然返回带有默认值的HTML.
如何通过jQuery简单地获取更新的HTML?
在前端(使用Vue.js)开发SPA并使用后端的(Laravel)API的端点会带来一些需要解决的挑战:
1.引入新的后端/前端代码时如何同步部署
如果将代码分隔在两个VCS存储库(前端/后端)中,则要同步同步前端和后端的部署以确保两者在同一时间完成可能会很困难。否则,这可能导致意外行为(例如,调用尚未部署或已更改的端点)。有人为此提出了一个很好的解决方案吗?您解决该问题的最佳做法是什么?如果无法对每个小的更改进行版本控制怎么办?
2.如何确保在部署后刷新SPA的前端代码?
因此,您设法使部署保持同步(请参阅问题1),但是如何确保每个当前活动的最终用户的SPA代码都得到刷新?启用webpack代码拆分后,对于在部署之间当前正在使用您的应用程序的用户,该应用程序可能会立即中断。
您如何确保为用户提供最新的JS,而不让他们在每次请求时都重新加载整个应用程序?什么是最佳做法(除了强制用户通过WebSocket刷新整个页面外)?是否有解决方案可以让当前活动的用户继续使用该应用程序,而不会在他们刚准备好可以保存的内容时被刷新?
我对您的发现,学习和解决方案非常感兴趣!
我有一个这样的自定义验证器设置:
Validator::extend('valid_username', 'ProfileController@valid_username');
Run Code Online (Sandbox Code Playgroud)
然后我有以下方法来处理验证.它检查用户名是否已存在,以及用户名是否包含有效字符.
public function valid_username($attribute, $value, $parameters)
{
$u = User::where('username', $value)->get();
if ($u->count())
{
// here I would like to return "Username already taken."
return FALSE;
}
else if (preg_match("/^[A-Za-z0-9@\.\-_]+$/", $value))
{
return TRUE;
}
else
{
// here I would like to return "Username contains invalid characters."
return FALSE;
}
}
Run Code Online (Sandbox Code Playgroud)
我想更改此验证程序返回的错误消息,具体取决于导致验证失败的错误.但是,我不知道该怎么做.在我的语言文件中,我为验证器设置了以下行:
"valid_username" => "This username is already taken or contains invalid characters."
Run Code Online (Sandbox Code Playgroud)
Laravel是否可以返回特定的错误消息?或者我是否必须在两个自定义验证规则中拆分此验证?在这种情况下,这可能不是问题,但特别是如果涉及数据库访问,我宁愿在一个验证器中验证检索到的Eloquent模型,而不是两次实例化Eloquent对象.
我有一个这样的课:
class Example {
private function _test($value)
{
if ($value == 'xyz') return FALSE;
}
public function check()
{
$this->_test('xyz');
// more code follows here...
}
}
Run Code Online (Sandbox Code Playgroud)
基本上我想做的是从方法_test()中"冒泡"返回值FALSE作为方法check()的实际返回值,以便调用
$this->_test('xyz');
Run Code Online (Sandbox Code Playgroud)
将返回FALSE
return $this->_test('xyz');
Run Code Online (Sandbox Code Playgroud)
不起作用,因为如果值与'xyz'不匹配,我不想返回.
这有可能吗?
laravel ×3
vue.js ×2
dom ×1
eloquent ×1
html ×1
javascript ×1
jquery ×1
laravel-4 ×1
oop ×1
php ×1
validation ×1
vue-router ×1
vuex ×1
webpack ×1