我启动了一个运行 5.6 的新 Laravel 应用程序,并在运行 migrate 之前简化我一次创建多个迁移的过程。我有大量的外键用于链接以使我的数据库易于扩展。
我的问题是尝试在迁移后期出现的数据库中引用外键。我相信它不起作用,因为我尝试引用的表尚未按操作顺序创建。
例如:
create_users_table迁移:
$table->increments('id');
$table->string('name');
$table->string('email')->unique();
$table->string('password');
$table->integer('user_id')->nullable()->unsigned();
$table->foreign('user_id')->references('id')->on('users');
$table->integer('type_id')->nullable()->unsigned();
$table->foreign('type_id')->references('type_id')->on('types');
$table->integer('post_id')->nullable()->unsigned();
$table->foreign('post_id')->references('post_id')->on('posts');
$table->rememberToken();
$table->timestamps();
Run Code Online (Sandbox Code Playgroud)
例如:create_types_table迁移:
$table->increments('id');
$table->string('type');
$table->integer('user_id')->nullable()->unsigned();
$table->foreign('user_id')->references('user_id')->on('users')->nullable();
$table->integer('revenue_id')->nullable()->unsigned();
$table->foreign('revenue_id')->references('revenue_id')->on('revenue')->nullable();
$table->integer('hours_id')->nullable()->unsigned();
$table->foreign('hours_id')->references('hours_id')->on('hours')->nullable();
$table->integer('project_id')->nullable()->unsigned();
$table->foreign('project_id')->references('project_id')->on('projects')->nullable();
$table->integer('type_id')->nullable()->unsigned();
$table->foreign('type_id')->references('id')->on('types');
$table->timestamps();
Run Code Online (Sandbox Code Playgroud)
我在所有表格中都遵循这种相同类型的模式。我想我的问题是;这是因为表还没有创建,所以没有什么可参考的吗?有没有办法解决这个问题,或者我是否需要重新启动,创建所有表,然后为每个表添加另一个迁移以添加外键?
这可能是一个愚蠢的问题,我对 Laravel 还很陌生。这是我第一次尝试在早期将关系添加到应用程序中。
我有必需的文件字段,它作为路径记录在数据库中。如果它在数据库中的字段为空,我想使它成为可选的必需项。在update我的控制器的操作中,我设置了以下验证:
$this->validate(request(),[
'drawings' => 'requiredIfEmpty:'.$product->drawings.'|file|max:'. config('fox.photoMaxSize').'|mimes:pdf',
Run Code Online (Sandbox Code Playgroud)
然后在app/Providers/AppServiceProvider.php我定义的requiredIfEmpty验证器中:
Validator::extend('requiredIfEmpty',function ($attribute,$value,$parameters,$validator){
if(is_null($parameters[0]) || empty($parameters[0])){
if (is_null($value)){
return false;
}
}
return true;
});
Validator::replacer('requiredIfEmpty', function ($message, $attribute, $rule, $parameters) {
return __('The :attr is required',['attr' => $attribute]);
});
Run Code Online (Sandbox Code Playgroud)
在视图中,_form我使用laravelcollective表单助手,如下所示drawings:
<div class="form-group {{$errors->first('drawings','has-error')}}">
@if (!is_null($product->drawings))
<a href="{{$product->drawings}}" target="_bfox"><img src="/imgs/pdf.png" alt="{{__('PDF File')}}" title="{{__('PDF File')}}" /></a>
<br>
@else
<img src="/imgs/empty.png" width="64" height="64" alt="{{__('Empty')}}..." title="{{__('Empty')}}..." /> <br>
@endif
{!! Form::label('drawings', __('Drawings')) !!}
{!! Form::file('drawings',['class' …Run Code Online (Sandbox Code Playgroud) 目前,我在表单上有一个日期字段,我希望能够插入正在编辑的当前记录的当前值。我的 MySQL 数据库中没有记录缺少此日期字段,但由于某种原因,记录的值实际上不会加载到字段输入中,但它会加载到输入字段的“值”部分。
目前这里是我的领域的代码:
<input type="date" name="date" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);" required value="{{$shipment->date}}">
Run Code Online (Sandbox Code Playgroud)
这是代码输出:
<input name="date" id="date" class="form-control" style="width: 100%; display: inline;" onchange="invoicedue(event);" required="" value="2018-05-10 00:00:00" type="date">
Run Code Online (Sandbox Code Playgroud)
但这就是我的浏览器中的样子:
但是在我的 MySQL 数据库表中,该字段(这是一个日期字段)的格式如下:2018-05-12
我正在使用Laravel 5.6.23
这是我的错误信息:
UnexpectedValueException
There is no existing directory at "C:\timereg-project\Laravel\storage\logs" and its not buildable: Protocol error
Run Code Online (Sandbox Code Playgroud)
目录日志确实存在于我的 Laravel 项目中。我试过这个不起作用:
php artisan cache:clear
php artisan clear-compiled
Run Code Online (Sandbox Code Playgroud)
我试过这个也不起作用:
composer dump-autoload
Run Code Online (Sandbox Code Playgroud)
如果我试试这个:
sudo chmod -R 777 storage
sudo chmod -R 777 storage
Run Code Online (Sandbox Code Playgroud)
我得到错误
chmod: cannot access 'Laravel/storage/logs': no such file or directory
Run Code Online (Sandbox Code Playgroud)
不起作用的命令:
composer update
Run Code Online (Sandbox Code Playgroud)
我该怎么办?感觉就像我被日志文件夹完全阻止了。
对于一个小的搜索块表单,我有以下控制器功能部分:
$manifests = DB::table('carrier_manifests')
->join('customers', 'carrier_manifests.carrierOrigin', '=', 'customers.id')
->select('carrier_manifests.*', 'customers.customer_name')
->where([
['manifestNumber', 'LIKE', '%' . $manifest . '%'],
['originTerminal','LIKE','%' . $terminal . '%'],
['carrierOrigin', $direction[0], $direction[1]],
])
->whereNull('deleted_at')
->orderBy('dateUnloaded', 'DESC')
->whereBetween('dateUnloaded', [$startDate, $endDate])
->limit(100)
->get();
Run Code Online (Sandbox Code Playgroud)
它的每个部分都正常工作,除了一个部分, the whereBetween,由于工作流程的必要性,有时dateUnloaded没有为 each 填写 in 子句carrier_manifest,这意味着如果该dateUnloaded字段为空,它将被排除在搜索结果之外。
是否有关于如何包含那些缺少的结果的建议dateUnloaded?
我有一个 Laravel 5.6 项目,正在尝试从这样的表单更新帖子
<input name="email" type="text" class="form-control" placeholder="Email" value="{{$user->email}}" required>
Run Code Online (Sandbox Code Playgroud)
在我的 PostsController 我有这个......
if($request->input('email')) {
$user->email = $request->input('email');
}
Run Code Online (Sandbox Code Playgroud)
我希望它仅在表单中输入了新电子邮件时才更新电子邮件,但是因为我预先填充了表单字段,所以它总是通过 IF。
有没有更多的 Laravel 方法来做到这一点?我看过 isDirty() 但我不确定它是否正确使用。
显然,我不能使用
<div>
<label for="description">Description</label>
<textarea class="form-control" id="description" name="description" rows="3" value="{{ $product->description }}"></textarea>
</div>
Run Code Online (Sandbox Code Playgroud)
现在我正在使用 WYSIWYG(tinymce),它可以textarea单独使用,但是将 WYSIWYG 集成在 a 中textarea,不。如何description在 WYSIWYG 中显示 的值?我必须使用 Javascript 吗?
我正在关注 Laracasts 上的多对多关系 Laravel 教程 - https://laracasts.com/series/laravel-5-fundamentals/episodes/21
我对自己的挑战是,我创建了数据透视表article_tag) to keep track of the many to many relations. Articles can have many tags, and tags can have many articles. So I can run同步etc to associatetagX tagY tagZ article1` to。但是,我也希望能够选择将关联标签之一设置为“isGreenTag”。我可以在跟踪多对多关系的数据透视表中执行此操作吗?我可以添加一列“is_green_tag”吗?
这是我的Article班级关系:
class Article extends Model {
public function tags() {
return $this->belongsToMany('App\Tag')->withTimestamps();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Tag班级关系:
class Tag extends Model {
public function articles() {
return $this->belongsToMany('App\Articles');
}
}
Run Code Online (Sandbox Code Playgroud)
这是我对数据透视表的迁移:
public function up() { …Run Code Online (Sandbox Code Playgroud) 我创建了一个名为 Class UserRequest 的 Mailable 我试图从控制器内部调用它,这是我得到的错误:
找不到类“App\Http\Controllers\UserRequest”
我也试过了,->send(new \UserRequest($msgdata));但还是不行。
控制器:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Mail;
class ContactController extends Controller
{
public function index()
{
return view('contact');
}
public function sendemail(Request $request)
{
$msgdata = array('subject'=>$request->subject,'email'=>$request->email, 'name'=>$request->name,'body'=>$request->body);
try
{
Mail::to('dddddddd@dddsdsf.com')
->send(new UserRequest($msgdata));
}
catch(Exception $e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud) laravel-5 ×10
laravel ×9
php ×6
chmod ×1
controller ×1
eloquent ×1
email ×1
laravel-5.7 ×1
laravel-nova ×1
mysql ×1
protocols ×1
wysiwyg ×1