我正在尝试使用Laravel 4中的Mail Class,而我无法将变量传递给$ m对象.
$ team对象包含我从数据库中获取的具有eloquent的数据.
Mail::send('emails.report', $data, function($m)
{
$m->to($team->senior->email, $team->senior->first_name . ' '. $team->senior->last_name );
$m->cc($team->junior->email, $team->junior->first_name . ' '. $team->junior->last_name );
$m->subject('Monthly Report');
$m->from('info@website.com', 'Sender');
});
Run Code Online (Sandbox Code Playgroud)
出于某种原因,我得到一个错误,其中$ team对象不可用.我想它与范围有关.
有任何想法吗 ?
如何在两列上设置唯一约束?
class MyModel extends Migration {
public function up()
{
Schema::create('storage_trackers', function(Blueprint $table) {
$table->increments('id');
$table->string('mytext');
$table->unsignedInteger('user_id');
$table->engine = 'InnoDB';
$table->unique('mytext', 'user_id');
});
}
}
MyMode::create(array('mytext' => 'test', 'user_id' => 1);
// this fails??
MyMode::create(array('mytext' => 'test', 'user_id' => 2);
Run Code Online (Sandbox Code Playgroud) 我只是在学习Laravel,并且有一个工作的迁移文件来创建一个用户表.我试图填充用户记录作为迁移的一部分:
public function up()
{
Schema::create('users', function($table){
$table->increments('id');
$table->string('email', 255);
$table->string('password', 64);
$table->boolean('verified');
$table->string('token', 255);
$table->timestamps();
DB::table('users')->insert(
array(
'email' => 'name@domain.com',
'verified' => true
)
);
});
}
Run Code Online (Sandbox Code Playgroud)
但是我在运行时遇到以下错误php artisan migrate:
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'vantage.users' doesn't exist
Run Code Online (Sandbox Code Playgroud)
这显然是因为Artisan还没有创建表,但所有文档似乎都说有一种方法可以使用Fluent Query来填充数据作为迁移的一部分.
谁知道怎么样?谢谢!
我在路由方面遇到了一些麻烦.
我正在使用CMS,我需要两条主要路线./admin和/(:any).该admin控制器用于路由/admin和view控制应该用于任何东西比其他/admin.从view控制器,那么我就要解析URL并显示正确的内容.
这就是我所拥有的:
Route::get(array('admin', 'admin/dashboard'), array('as' => 'admin', 'uses' =>'admin.dashboard@index'));
Route::any('(:any)', 'view@index');
Run Code Online (Sandbox Code Playgroud)
第一条路线有效,但第二条路线没有.我玩了一下它,似乎如果我使用(:any)没有问号,它只有在我放了一些东西后才有用/.如果我这样做把问号在那里,它不会在所有的工作.
我想要以下所有路由去查看@index:
/
/something
/something/something
/something/something/something
/something/something/something/something
...etc...
Run Code Online (Sandbox Code Playgroud)
这可能没有硬编码一堆(:any?)/(:any?)/(:any?)/(:any?)(我甚至不知道工作)?
最好的方法是什么?
我想定义一个带有参数的路由,该参数将包含斜杠/字符,因此参数example.com/view/abc/02在哪里abc/02.
如何防止Laravel读取斜杠作为下一个路径参数的分隔符?因为我现在得到了404 not found error.
我是Laravel的新手并且通常使用PHP命名空间.在我决定制作名为File的模型之前,我没有遇到任何问题.我如何正确地进行命名空间,以便我可以使用我的File模型类?
文件是app/controllers/FilesController.php和app/models/File.php.我正在努力创造一个新File的FilesController.php.
如果我的问题的答案显而易见,请提前道歉.在我发布这篇文章之前,我已经在研究这个主题时做了尽职调查.
我的大多数框架体验来自使用CodeIgniter,所以我从未有过使用ORM的实践经验.(CI确实有一些现成的ORM解决方案,但我从未使用它们.)
我想在Laravel的Eloquent ORM中使用内置的ORM功能,在运行查询时自动将锦标赛和国家/地区表连接在一起,并返回包含锦标赛数据及其相关国家/地区数据的数据集.
也就是说,我希望Eloquent自动识别外键关系,以便我可以运行查询(例如,Tournament :: with('Country') - > all())将返回整套锦标赛和国家/地区数据.
如果我以一种从未打算使用的方式使用Eloquent,请立即停止我!我的困惑可能更多的是我试图将一个难以维持的解决方案混合在一起而不是语法或编码错误.
SELECT * FROM tournaments LEFT JOIN countries ON tournaments.country_id = countries.id
Run Code Online (Sandbox Code Playgroud)
我希望收到一系列Tournament对象(在PHP中),其中单个Tournament对象如下所示:
我在虚拟控制器方法中运行了所有这些尝试,并将结果作为格式化字符串输出到分析器.
虚拟控制器中的PHP代码:
$tournaments = Tournament::with('Country')->all();
Run Code Online (Sandbox Code Playgroud)
生成以下查询:
SELECT * FROM `tournaments`
Run Code Online (Sandbox Code Playgroud)
尝试#1返回:
包含Tournament对象的数组,仅包含锦标赛表中的列.
虚拟控制器中的PHP代码:
$tournaments = Tournament::with('Country')->first();
Run Code Online (Sandbox Code Playgroud)
生成以下错误:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'tournament_id' in 'where clause'
SQL: SELECT * FROM `countries` WHERE `tournament_id` IN (?)
Bindings: array ( …Run Code Online (Sandbox Code Playgroud) 我可以映射Laravel的时间戳:
created_at要post_date和post_date_gmt?
updated_at要post_modified和post_modified_gmt?
我正在将Wordpress应用程序迁移到Laravel.
我正在使用Laravel访问Wordpress数据库的副本.数据库的实时版本仍在使用中,因此我不想更改架构.
该帖子表有post_date,post_date_gmt,post_modified和post_modified_gmt,但Laravel期待created_at和updated_at.
反正有没有改变Laravel寻找的列名?
我希望Laravel更新已经存在的所有列的时间戳.
我在Laravel文档中找不到重定向为301/302的信息.
在我的routes.php文件中,我使用:
Route::get('foo', function(){
return Redirect::to('/bar');
});
Run Code Online (Sandbox Code Playgroud)
这是默认的301或302吗?有没有办法手动设置它?知道为什么会从文档中省略这一点吗?