我试图在'Users'表和'User_profiles'表之间建立一个非常简单的关系模型.每个用户都有一个user_profile,所以它是一对一的简单.根据发现的文档@ http://four.laravel.com/docs/eloquent#one-to-one我已将以下功能添加到我的用户模型中:
public function user_profile()
{
return $this->hasOne('User_profile');
}
Run Code Online (Sandbox Code Playgroud)
这是我的User_profile模型中定义的关系:
public function user()
{
return $this->belongsTo('User');
}
Run Code Online (Sandbox Code Playgroud)
我试图从控制器访问像这样:
// Get current user
$user = User::find(Auth::user()->id);
$profile = $user->user_profile;
print_r($user);
print_r($profile);
echo "User's name is: " . $user->user_profile->first_name . ' ' . $user->user_profile->last_name;
Run Code Online (Sandbox Code Playgroud)
不幸的是,打印$ user打印出用户模型字段就好了,但没有显示任何关系的痕迹; $ profile是空的.'relations'数组也是空的,我猜应该填充它.
我正在尝试使用此处建议的"动态属性" http://four.laravel.com/docs/eloquent#dynamic-properties
否则如果我去:
echo "User's name is: " . $user->user_profile()->first()->first_name . ' ' . $user->user_profile()->first()->last_name;
Run Code Online (Sandbox Code Playgroud)
它有效......但我真的不喜欢这样做.
有什么建议?
我使用的是最新版本的Laravel 4,我无法设置cookie:
Route::get('cookietest', function()
{
Cookie::forever('forever', 'Success');
$forever = Cookie::get('forever');
Cookie::make('temporary', 'Victory', 5);
$temporary = Cookie::get('temporary');
return View::make('cookietest', array('forever' => $forever, 'temporary' => $temporary, 'variableTest' => 'works'));
});
Run Code Online (Sandbox Code Playgroud)
查看脚本:
@extends('layouts.master')
@section('content')
Forever cookie: {{ $forever }} <br />
Temporary cookie: {{ $temporary }} <br />
Variable test: {{ $variableTest }}
@stop
Run Code Online (Sandbox Code Playgroud)
产量:
Forever cookie:
Temporary cookie:
Variable test: works
Run Code Online (Sandbox Code Playgroud)
如果我刷新页面或在一个路径中创建cookie并尝试在另一个路径中访问它们并不重要.我可以确认没有使用上述操作设置cookie.cookies'laravel_payload'和'laravel_session'以及'remember_ [HASH]'确实存在,我可以使用setcookie使用常规PHP设置cookie.
在我能找到的任何地方都不会抛出或记录任何错误.我在本地运行Linux Mint,在我的服务器上运行Debian,都使用nginx,我在两个地方都有同样的问题.
如果我的验证失败,我这样做:
return Redirect::back()->with('validation', $validation->errors->all());
Run Code Online (Sandbox Code Playgroud)
我也在使用:
$restful = true;
Run Code Online (Sandbox Code Playgroud)
所以当我在get_edit()- 我得到一个错误,在生成我的视图时没有$ validation变量,当进入时post_edit()- 它一切正常,因为它返回一个有错误的重定向...
这是我的看法:
<? foreach($validation as $e): ?>
<div><?= $e; ?></div>
<? endforeach; ?>
Run Code Online (Sandbox Code Playgroud)
undefined变量$ validation,现在我试着把它放在Router ::之前
Route::filter('before', function()
{
View::share('validation', array());
});
Run Code Online (Sandbox Code Playgroud)
所以变量存在但是是空的,但是现在出现了一个新问题,每次在这个过滤器执行之后它会覆盖那些$validation生成我post_edit()的变量$errors,我在视图中看到过一个变量但是它一直是空的,我不知道如何使用它, 你能帮助我吗?
所以很快我的问题是:
public function get_edit($id)
{
//generate my view with all nessesary data, but i can't generate here an error variable
// or its better to put it in one place to globally share it in …Run Code Online (Sandbox Code Playgroud) 我正在开发一个Laravel 4 Beta 5的网站,我正在尝试将编码的URL传递给路由器.问题是,编码的URL中有百分比等,因此它被Laravel阻止.URL使用Javascript函数进行编码encodeURIComponent().
有没有办法覆盖Laravel所以我可以在我的路线中使用任何角色?
这是我目前的代码:
Route::get('add/{encoded_url}', function($encoded_url)
{
return 'The URL is: '.rawurldecode($encoded_url);
});
Run Code Online (Sandbox Code Playgroud)
我试图通过追加来覆盖Laravel where('encoded_url', '*reg-ex*');,但它没有用(我对reg-ex,顺便说一下我不是很好).
您好我已经决定使用Bootbox.js作为一种简单的方法来合并一个bootstrap模式,这样我就可以让用户在发布表单并进行更改之前确认他们的选择.
我在我的默认布局文件中使用Laravel,jQuery,Bootstrap和Bootbox.js:
Layout.blade.php
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.1.min.js"></script>')</script>
<script src="js/plugins.js"></script>
<script src="js/main.js"></script>
<script src="js/vendor/bootstrap.js"></script>
<script src="js/vendor/modernizr-2.6.2.min.js"></script>
<script src="js/vendor/bootbox.js"></script>
Run Code Online (Sandbox Code Playgroud)
用户页面:
{{Form::open('choice')}}
@foreach($items as $item)
<tr>
<td>{{ HTML::image($item->image, '', array('class' => 'img img-rounded', 'width' => '100px', 'height' => '100px')) }}</td>
<td>{{$item->name}}</td>
<td>{{ $item->desc }}</td>
<td>{{ Form::radio('item', $item->item_id)}}</tr>
@endforeach
</tbody>
</table>
{{ Form::submit('Confirm Choice', array('class' => 'btn btn-success btn-block')) }}
<script>
$(document).ready(function() {
$(document).on("click", ".alert", function(e) {
bootbox.confirm("Are you happy with the decision you have made?", "I have changed my mind", "I …Run Code Online (Sandbox Code Playgroud) 使用Laravel 4我有以下模型和关系:具有多个记录的事件,其中包含许多项目.我想做的是这样的事情
Item::where('events.event_type_id', 2)->paginate(50);
Run Code Online (Sandbox Code Playgroud)
这个原因不起作用,因为Eloquent在检索记录时不会将模型连接在一起.那么如何在不自己编写SQL的情况下解决这个问题(因为我想使用分页,我想避免使用它).
我需要在运行测试之前清理数据库,否则我会收到有关重复信息的奇怪错误.
在我的PostTest.php文件中,我创建了一个设置方法
public function setUp()
{
Artisan::call('migrate:refresh');
}
Run Code Online (Sandbox Code Playgroud)
然后phpunit测试说:
PHP Fatal error: Class 'Artisan' not found in C:\wamp\www\squigglemd\app\tests\PostTest.php on line 11
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
\Artisan::call('migrate:refresh');
Run Code Online (Sandbox Code Playgroud)
我如何从测试中调用Artisan?
我已经完成了Laravel 4的全新安装,在完成数据库迁移后,我收到此错误:
\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php line 56
Error: Call to undefined method User::newQuery() in D:\xampp\htdocs\start\vendor\laravel\framework\src\Illuminate\Auth\EloquentUserProvider.php line 56
我的User模型没有修改(Laravel原创),我刚刚创建了一些迁移.
我的"用户"模型与"图像"模型有很多关系.
只返回用户就像"return Response :: eloquent($ user);"一样简单.我想要返回一个{user:{id:...}的JSON数组,images:[{id:...},{id:...}]},或者更好,{id:...,images:[{ ID:...},{ID:...}]}
安排和运送这些模型的最佳方法是什么?我是不是该
现在尝试使用Laravel框架设置一个小的Vagrant开发环境,并且需要使我/ vagrant/storage/views文件夹可写,但无论如何我都无法获得文件夹的权限!
我已经做好了:
sudo chmod -R 777 /vagrant/storage/views
Run Code Online (Sandbox Code Playgroud)
...之后仍然保留对该文件夹的rwxr-xr-x权限.我可以更改文件的权限,但不能更改/ vagrant文件夹中的文件夹.
任何人对如何解决这个问题都有任何想法?谢谢.